本文介绍了如何创建任务(TPL)运行的STA线程?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用线程是pretty简单
线程线程=新主题(MethodWhichRequiresSTA);
thread.SetApartmentState(ApartmentState.STA);
如何完成任务用在WPF应用程序一样吗?下面是一些code:
Task.Factory.StartNew
(
()=>
{返回一些文本;}
)
.ContinueWith(R => AddControlsToGrid(r.Result));
我得到一个InvalidOperationException以
解决方案
You can use the TaskScheduler.FromCurrentSynchronizationContext Method to get a TaskScheduler for the current synchronization context (which is the WPF dispatcher when you're running a WPF application).
Then use the ContinueWith overload that accepts a TaskScheduler:
var scheduler = TaskScheduler.FromCurrentSynchronizationContext();
Task.Factory.StartNew(...)
.ContinueWith(r => AddControlsToGrid(r.Result), scheduler);
这篇关于如何创建任务(TPL)运行的STA线程?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!