它是安全的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