本文介绍了如何创建任务(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线程?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-02 01:15