如何创建运行STA线程的任务(TPL)?
使用线程非常简单
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);
以上是 如何创建运行STA线程的任务(TPL)? 的全部内容, 来源链接: utcz.com/qa/411710.html