读过“当前 SynchronizationContext 是当前线程的属性”正确的短语后,我有点困惑......
在 VS2010 的 C# 应用程序代码中,当我键入时,我Thread.CurrentThread.
在 Intellisense 给出的选项下拉列表中找不到线程的任何上下文相关属性。
我知道当前的同步上下文可以通过 " = SynchronizationContext.Current;
" 获得。但这对于在并行线程、任务等中同时执行并不是很幸运。
假设从控制台或 WPF (*)应用程序中,我在其自己的主 UI 线程以及 TPL 任务 中创建并启动了一些 Windows 窗体。
我认为每个winform都应该有自己的WindowsFormaSynchronizationContext,WPF 应该有自己的DispatcherSynchronizationContext(SynchronizationContext 类的子类)实例,任务在具有自己的同步上下文的ThreadPool中执行, LongRunning 任务或者可能会在其线程池中执行自己的同步上下文...
那么,为什么不能SynchronizationContext
从线程中定义呢?“从给定线程获取 SynchronizationContext”问题的所有答案似乎都在否定这种可能性......
最后但并非最不重要的一点是:“当前 SynchronizationContext 是当前线程的属性”
这句话是否正确?
那么,我如何才能为不同的特定线程实例获取此属性的值?
(*)
最近,我收到了基本上使用 winforms 的 C# WPF 应用程序代码。