使用线程非常简单
Thread thread = new Thread(MethodWhichRequiresSTA); thread.SetApartmentState(ApartmentState.STA);
如何在WPF应用程序中使用“任务”完成相同任务?这是一些代码:
Task.Factory.StartNew ( () => {return "some Text";} ) .ContinueWith(r => AddControlsToGrid(r.Result));
我收到一个InvalidOperationException与
调用线程必须是STA,因为许多UI组件都需要STA。
您可以使用TaskScheduler.FromCurrentSynchronizationContext方法获取当前同步上下文(运行WPF应用程序时是WPF调度程序)的TaskScheduler。
然后使用接受TaskScheduler 的ContinueWith重载:
var scheduler = TaskScheduler.FromCurrentSynchronizationContext(); Task.Factory.StartNew(...) .ContinueWith(r => AddControlsToGrid(r.Result), scheduler);