Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在多个任务之间共享TaskScheduler实例_C#_Task Parallel Library - Fatal编程技术网

C# 在多个任务之间共享TaskScheduler实例

C# 在多个任务之间共享TaskScheduler实例,c#,task-parallel-library,C#,Task Parallel Library,我创建了一个TaskScheduler,并将它作为参数传递给两个不同的任务。 做这件事有什么问题吗? 我是否应该为每个任务创建一个新的TaskScheduler实例 下面是示例(为了简单起见,删除了每个任务中的实际代码) var uiSch=System.Threading.Tasks.TaskScheduler.FromCurrentSynchronizationContext(); var t1=Task.Factory.StartNew(()=> { //做事情 }) .ContinueW

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

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

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

var uiSch=System.Threading.Tasks.TaskScheduler.FromCurrentSynchronizationContext();
var t1=Task.Factory.StartNew(()=>
{
//做事情
})
.ContinueWith(上一个=>
{
//做事情
},
System.Threading.CancellationToken.None,
TaskContinuationOptions.OnlyOnRanToCompletion,
uiSch);
var t2=Task.Factory.StartNew(()=>
{
//做事情
})
.ContinueWith(上一个=>
{
//做事情
},
System.Threading.CancellationToken.None,
TaskContinuationOptions.OnlyOnRanToCompletion,
uiSch);
[第1版]

我的问题部分与以下错误有关: '当前SynchronizationContext不能用作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);