从Metro App中的工作线程调用UI线程

时间:2013-06-27 09:42:37

标签: c#

我正在编写一个与Windows Phone和metro共享的共享应用程序。我需要从Metro App中XAML后面的Code中的Worker线程调用我的UI线程。是的,我知道我可以通过使用async和await来完成它。但是我无法使用它,因为其他平台(Android和手机)不支持此功能。

在Windows Phone中,我知道可以使用Deployment.Dispatcher.Current.BeginInvoke()完成此操作。但我不知道如何在Metro App中完成它

另外,我是C#和App开发的新手。因此,如果您能够详细介绍它,那将会很有帮助。

1 个答案:

答案 0 :(得分:0)

在不久的将来,我希望我们能够在Android / WP / Windows Store的便携式类库上使用async。如果您将后台操作视为UI的“服务”,而不是将UI视为后台操作的“服务”,则async效果最佳。因此,如果您通过将大背景操作分解为更小的块并且UI侧驱动它们,在每个块之间进行更新,则您的代码将更好地工作。当您的代码以这种方式构建时,您的后台操作将不需要编组到UI。

如果您只想减少工作量,可以使用SynchronizationContext。当您的后台操作开始时,请捕获SynchronizationContext.Current,然后使用SendPost方法从后台操作运行UI更新。这导致设计更加混乱,但它现在可以在Android / WP / Windows商店中使用。

相关问题