它是安全的UI线程的TaskScheduler存储在一个领域如下:将UI线程的TaskScheduler存储在字段中是否安全?
class TaskSchedulerReference {
private readonly _uiTaskScheduler;
// Constructor is called by the UI Thead
public TaskSchedulerReference() {
_uiTaskScheduler = TaskScheduler.FromCurrentSynchronizationContext()
}
public TaskScheduler UiTaskScheduler { get { return _uiTaskScheduler; } }
}
...所以有可能在任何时间从任何后台线程通知UI在Task.ContinueWith(action, TaskSchedulerReference.UiTaskScheduler)
回调。
是否保证在整个应用程序生命周期中引用仍然有效?
这个静态初始化器非常危险。请参阅[我的答案](http://stackoverflow.com/questions/25751465/prism-5-delegatecommandbase-raisecanexecutechanged-throws-invalidoperationexcept/27406194#27406194)我在哪里解释如何可以这样的事情搞砸了整个应用程序。不保证该字段将在UI线程上初始化。 – dymanoid 2015-02-24 16:23:13
请注意,这不是SC,它是使用SC的'TaskScheduler'。 – i3arnon 2015-02-24 16:59:22
忘记静态初始值设定项。这不是重点。我纠正了这个问题...... – jeromerg 2015-02-24 17:07:18