2013-06-27 2 views
0

저는 Windows Phone 및 Metro와 공유되는 공유 응용 프로그램을 작성하고 있습니다. 그리고 Metro App의 XAML 코드 뒤에있는 Worker 스레드에서 UI 스레드를 호출해야합니다. 그리고 나는 비동기를 사용하고 기다릴 수 있다는 것을 알고 있습니다. 하지만이 기능은 다른 플랫폼 (Android 및 Phone)에서 지원되지 않기 때문에 사용할 수 없습니다.메트로 앱의 작업자 스레드에서 UI 스레드 호출

Windows Phone에서이 작업은 Deployment.Dispatcher.Current.BeginInvoke()를 사용하여 수행 할 수 있음을 알고 있습니다. 하지만 지하철 앱에서 어떻게 수행되는지 알 수 없습니다.

또한 C# 및 App 개발의 초보자입니다. 따라서 세부 사항을 제시 할 수 있다면 도움이 될 것입니다.

답변

0

가까운 미래에 Android/WP/Windows 스토어 용 휴대용 클래스 라이브러리에 async을 사용할 수 있기를 기대합니다. async은 백그라운드 작업을 UI의 "서비스"로 취급하고 UI를 백그라운드 작업의 "서비스"로 취급하지 않는 것이 가장 효과적입니다. 따라서 큰 배경 작업을 작은 덩어리로 분해하고 UI 측면에서 각 덩어리 사이를 업데이트하여 코드를 재구성하면 코드가 더 잘 작동합니다. 그런 식으로 코드를 구성하면 백그라운드 작업이 UI에 마샬링 할 필요가 없습니다.

더 적은 작업으로 현재 작업하고 싶은 항목이 있다면 SynchronizationContext을 사용할 수 있습니다. 백그라운드 작업이 시작되면 SynchronizationContext.Current 이상을 캡처하고 Send 또는 Post 메서드를 사용하여 백그라운드 작업에서 UI 업데이트를 실행하십시오. 이것은 더 복잡한 디자인을 초래하지만, 현재 Android/WP/Windows Store에서 사용할 수 있습니다.

관련 문제