【发布时间】:2013-04-24 03:58:10
【问题描述】:
看了"The current SynchronizationContext is a property of the current thread" correct"这句话,我有点糊涂了……
在 VS2010 的 C# 应用程序代码中,当我键入 Thread.CurrentThread. 时,我在 Intellisense 提供的选项下拉列表中找不到线程的任何上下文相关属性。
我知道当前的同步上下文可以通过 "= SynchronizationContext.Current;" 获得。但这在并行线程、任务等中同时执行就不太幸运了。
假设我从控制台或 WPF (*) 应用程序创建并启动 a few Windows forms in its own main UI threads 以及 TPL 任务。
我不理解每个winform应该有自己的WindowsFormaSynchronizationContext,WPF应该有自己的DispatcherSynchronizationContext(SynchronizationContext class的子类)实例,任务在ThreadPool中执行,有自己的同步上下文@987654327 @task orobably 将在其自己的同步上下文中的线程池之外执行...
那么,为什么不能从线程定义SynchronizationContext? "Get SynchronizationContext from a given Thread" 问题的所有答案似乎都在否定这种可能性......
最后但并非最不重要的:
短语"The current SynchronizationContext is a property of the current thread" correct" 正确吗?
那么,如何获取不同特定线程实例的这个属性的值呢?
(*)
最近,我收到了基本上使用 winforms 的 C# WPF 应用程序代码。
【问题讨论】:
标签: c# multithreading task-parallel-library thread-synchronization synchronizationcontext