C# 理解C语言中的调度器#

C# 理解C语言中的调度器#,c#,C#,我正在看一个关于异步C#5的视频,在这个例子中,他有一个异步方法和一个lambda回调函数。由于lambda回调函数在单独的线程上执行,因此尝试更改其中的UI会导致异常 为了缓解这种情况,他使用了Dispatcher.RunAsync(…) 然而,我对此感到困惑。我创建了一个新的.NET4.5项目,并试图找到Dispatcher类,但在任何地方都找不到它。Google告诉我它在System.Windows.Threading命名空间中,但我的计算机上没有这个dll,只有System.Window

我正在看一个关于异步C#5的视频,在这个例子中,他有一个异步方法和一个lambda回调函数。由于lambda回调函数在单独的线程上执行,因此尝试更改其中的UI会导致异常

为了缓解这种情况,他使用了
Dispatcher.RunAsync(…)

然而,我对此感到困惑。我创建了一个新的.NET4.5项目,并试图找到Dispatcher类,但在任何地方都找不到它。Google告诉我它在System.Windows.Threading命名空间中,但我的计算机上没有这个dll,只有System.Windows

我也不太明白它是如何工作的——查看MSDN文档,我真的看不到Dispatcher(它可能处理所有线程)将如何在UI线程上执行操作——RunAsync方法没有指定在其上执行操作的线程

我认为可能dispatcher只是在用于创建dispatcher的线程上运行一些东西,但是由于上述问题,我无法在本地尝试这一点,所以我不知所措

有人能告诉我解决方案吗?

您提到的是使用Windows运行时和.NET Framework 4.5开发Windows应用商店应用程序,他使用CoreDispatcher的方法,这是新Windows API的一部分,位于名称空间Windows.UI.Core中


停止为00:20:21,查看IntelliSense

不要将名称空间与程序集混淆。命名空间中的类型可以跨多个程序集分布,并且命名空间名称不必与程序集名称相同。因此没有
System.Windows.Threading
assembly,即使存在同名命名空间。可能这是通过CoreDispatcher的Windows 8 Dispatcher?我认为他使用了CoreDispatcher的方法,这是新Windows API的一部分,位于命名空间Windows.UI.Core中。Dispatcher位于WindowsBase.DLL中。你能发一个视频链接吗?