2012-11-11 3 views
4

라이브 타일이 포함 된 Windows 8 Store App을 쓰고 있습니다. 모든 라이브 타일은 x 분마다 새로 고쳐야하는 이미지입니다. 내 이미지를 생성하고 타일을 새로 고치려면 시간 트리거와 함께 백그라운드 작업을 사용하고 있습니다.백그라운드 작업에서 WriteableImage 인스턴스화

WriteableBitmap의 새 인스턴스를 만들려고 할 때 내 이미지가 새로운 하나를 만들고 여기에 내 물건을 페인트하지만 어떤 이유로 나는 예외를 얻고 것을 의미 생성 :

var newImage = new Windows.UI.Xaml.Media.Imaging.WriteableBitmap(10, 10); 

또는

var newImage = BitmapFactory.New (10, 10);

이 예외가 발생 :

어플리케이션이 다른 스레드 정렬 화 된 인터페이스를 호출. (HRESULT에서 예외 : 0x8001010E (RPC_E_WRONG_THREAD))

내가 왜 WriteableBitmap는 UI 스레드를 다시 다음 거기에 배경 작업에는 UI 스레드가 없지만 때문이다 인상을 요구했다?

어떻게 해결할 수 있습니까? 내 백그라운드 작업에서 WriteableBitmap을 인스턴스화하는 방법은 무엇입니까?

CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, 
      () =>{ 
       // Your UI update code goes here! 
       WriteableBitmap writeableBmp = BitmapFactory.New(imageWidth, imageHeight); 
      }); 

그러나 대부분의 아마 당신이 다른 예외를 얻을 것이다 (InvalidOperationException이 :

+0

좋은 질문을 통해 다음 UWP 후속 버전에

이 가능하게되었다 윈도우 8에 승리 8.1 불가능했고 밝혀졌습니다. 나는 실제로 작동하는 대답을보고 싶다. – DarrellNorton

답변

-1

당신은 Dispatcher

Application.Current.Dispatcher.Invoke(
    DispatcherPriority.Normal, 
    new Action(() => createBitmap) 
); 

UPDATE

Dispatcher.RunAsync 
    (CoreDispatcherPriority.Normal, 
    () => new WriteableBitmap(10, 10)); 
+1

이것은 일반 응용 프로그램에서 작동하지만 WinRT 백그라운드 작업이므로 Application.Current.Dispacher를 사용할 수 없습니다. WinRT의 백그라운드 작업 컨텍스트에 배치 할 작업 코드 조각이 있습니까? – AlexDrenea

+0

@AlexDrenea 업데이트 확인 – Mayank

+0

@Mayank 그 코드가 작동하지 않습니다. Dispatcher는 RunAsync 메소드가없는 ServiceModel.Dispatcher 또는 표준 응용 프로그램 Dispatcher를 나타냅니다. 나는 같은 문제에 뛰어 들고있다. – DarrellNorton

-1

당신은 여전히 ​​다음과 같은 코드를 사용할 수 있습니다 사용할 수 있습니다) 말하는 : 예기치 않은 시간에 메서드가 호출되었습니다. WinRT 정보 : 기본 창을 아직 만들지 않았기 때문에 새보기를 만들 수 없습니다.

관련 문제