我正在尋找一種方法來創建一個TaskScheduler在主線程中同步運行,以允許將WPF應用程序配置爲單線程用於調試目的。使TaskScheduler同步並運行在主線程
有什麼想法?
現在我使用的樣品LimitedTaskScheduler MSDN上,允許指定併發級別(多少線程使用),這擴展了應用程序啓動之前設置靜態TaskFactory:
void SetOnTaskFactory(TaskFactory taskFactory)
{
const BindingFlag = BindingFlags.Static | BindingFlags.NonPublic
var field = typeof(Task).GetField("s_factory", BindingFlag);
field.SetValue(null, taskFactory);
}
也許變種調度= TaskScheduler.FromCurrentSynchronizationContext(); ? – jure
它不起作用,如果以這種方式執行InvalidOperationException,則需要創建SynchronizationContext.SetSynchronizationContext(new SynchronizationContext()),但代碼在輔助線程中運行。 –
該代碼是否在單元測試中執行?如果您的應用程序正在運行,它應該可以工作。對於單元測試,請查看CurrentThreadTaskScheduler,http://blogs.msdn.com/b/pfxteam/archive/2010/04/09/9990424.aspx – jure