C# Dispatcher.BeginInvoke方法在windows phone应用程序中有何用途

C# Dispatcher.BeginInvoke方法在windows phone应用程序中有何用途,c#,windows-phone-7,windows-phone-8,C#,Windows Phone 7,Windows Phone 8,我遇到了一个包含Dispatcher.BeginInvoke方法的代码,我在谷歌上搜索了它以了解更多信息,但没有找到任何好的教程。谁能解释一下什么是Dispatcher.BeginInvoke,在什么情况下我应该使用它。。。 我在某个地方读到过它是用来更新UI元素的,我正在正常地更新UI元素,从来没有发现任何困难。 请解释为什么要在wp8 silverlight应用程序中使用此选项。所有UI元素只应在UI线程中更新。每个线程都有自己的调度程序。如果需要从非UI线程更新UI,则应调用_dispat

我遇到了一个包含Dispatcher.BeginInvoke方法的代码,我在谷歌上搜索了它以了解更多信息,但没有找到任何好的教程。谁能解释一下什么是Dispatcher.BeginInvoke,在什么情况下我应该使用它。。。

我在某个地方读到过它是用来更新UI元素的,我正在正常地更新UI元素,从来没有发现任何困难。


请解释为什么要在wp8 silverlight应用程序中使用此选项。

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

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

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

e、 g

在Windows Phone应用程序中需要执行的最常见任务之一是从单独的线程更新UI。例如,您可能正在使用WebClient类异步下载某些内容,操作完成后,您希望使用下载的内容更新UI。不允许直接从异步线程更新UI,因为UI控件不是线程安全的

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


有关更多参考信息,请阅读本文。BeginInvoke方法(操作)是一种在与调度程序关联的线程上异步执行指定委托的方法。它接受一个参数,即我们希望通过线程异步执行的
System.Action
。它返回值类型为
System.Windows.Threading.dispatcherooperation
调用BeginInvoke后立即返回的对象,表示已发布到调度程序队列的操作

e、 g

在Windows Phone应用程序中需要执行的最常见任务之一是从单独的线程更新UI。例如,您可能正在使用WebClient类异步下载某些内容,操作完成后,您希望使用下载的内容更新UI。不允许直接从异步线程更新UI,因为UI控件不是线程安全的

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

如需更多参考,请阅读本文

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