繁体   English   中英

Windows Phone应用程序中Dispatcher.BeginInvoke方法的用途是什么

[英]what is the use of Dispatcher.BeginInvoke method in windows phone apps

我遇到了其中包含Dispatcher.BeginInvoke方法的代码,我在Google上对其进行了搜索,以了解更多信息,但未找到任何好的教程。 谁能解释什么是Dispatcher.BeginInvoke,在什么情况下我应该使用它...

我已经在某处阅读了它用于更新UI元素的内容,我通常在更新UI元素,却从未发现任何困难。

请说明为什么要在wp8 silverlight应用程序中使用此功能。

Dispatcher.BeginInvoke Method (Action)是一种在与Dispatcher关联的线程上异步执行指定委托的方法。 它采用一个参数,作为我们希望通过线程异步执行的System.Action 它返回值类型为System.Windows.Threading.DispatcherOperation一个对象,该对象在调用BeginInvoke之后立即返回,它表示已发布到Dispatcher队列中的操作。

例如

Control.Dispatcher.BeginInvoke(() => {
        //Work to do with Thread
    //..............
    });

在Windows Phone应用程序中需要执行的最常见任务之一是updating the UI from a separate thread 例如,您可能使用WebClient类异步下载了一些内容,并且当操作完成时,您想使用下载的内容来更新UI。 不允许直接从异步线程更新UI,因为UI控件不是线程安全的。

从异步线程更新UI的最简单方法是使用Dispatcher类。 若要确定是否可以直接更新UI,可以使用CheckAccess()方法。 如果此方法返回true ,则意味着您可以直接更新UI。 否则,您必须使用Dispatcher类的BeginInvoke()方法以线程安全的方式更新UI。

有关更多参考,请阅读本文Windows Phone提示:从异步线程更新UI

所有UI元素应仅在UI线程中更新。 每个线程都有自己的调度程序。 如果需要从非UI线程更新UI,则应调用_dispatcher.BeginInvoke,其中_dispatcher是UI线程的调度程序对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM