在多个任务中共享TaskScheduler实例

时间:2013-01-03 15:27:57

标签: c# task-parallel-library

我创建了一个 TaskScheduler ,我传递它作为参数跨越两个不同的任务。

这样做有什么问题吗? 我应该为每个任务创建一个新的TaskScheduler实例吗?

以下是示例示例(为简单起见,每个任务中的实际代码都已删除)

var uiSch = System.Threading.Tasks.TaskScheduler.FromCurrentSynchronizationContext();

var t1 = Task.Factory.StartNew<List<Carrier>>(() =>
                    {
                        //does stuff
                    })
                    .ContinueWith(previous =>
                        {
                            //does stuff
                        },
                        System.Threading.CancellationToken.None,
                        TaskContinuationOptions.OnlyOnRanToCompletion,
                        uiSch);

var t2 = Task.Factory.StartNew<List<Logic.WarehouseLogic.Warehouse>>(() =>
                    {
                        //does stuff
                    })
                    .ContinueWith(previous =>
                        {
                            //does stuff
                        },
                        System.Threading.CancellationToken.None,
                        TaskContinuationOptions.OnlyOnRanToCompletion,
                        uiSch);
  

[EDIT1]

我的问题部分与以下错误有关: '当前的SynchronizationContext可能不会用作TaskScheduler' 可以找到修复程序here

1 个答案:

答案 0 :(得分:5)

在同一任务调度程序上安排多个任务没有问题。