C# 如何使用new关键字创建具有多个参数的任务、返回类型、TaskCreationOptions参数?
如何使用new创建具有多个参数、返回类型和createoptions的新任务C# 如何使用new关键字创建具有多个参数的任务、返回类型、TaskCreationOptions参数?,c#,task-parallel-library,task,C#,Task Parallel Library,Task,如何使用new创建具有多个参数、返回类型和createoptions的新任务 Task<int> task = Task<int>(DoWork(0,1)); private static Task<int> DoWork(int a, int b) { return null; } Task Task=Task(DoWork(0,1)); 私有静态任务DoWork(intA、intB) { 返回null; } 这很好用。。。。但当我尝试使用
Task<int> task = Task<int>(DoWork(0,1));
private static Task<int> DoWork(int a, int b)
{
return null;
}
Task Task=Task(DoWork(0,1));
私有静态任务DoWork(intA、intB)
{
返回null;
}
这很好用。。。。但当我尝试使用new关键字创建任务时,我可以将startoptions设置为longrunning,如下所示:
Task<int> task = new Task<int>(DoWork(0,1), TaskCreationOptions.LongRunning);
Task Task=新任务(DoWork(0,1),TaskCreationOptions.LongRunning);
我总是会犯一些错误,比如:
参数1:无法从“System.Threading.Tasks.Task”转换为“System.Func”
我尝试了xx种不同的变体,但没有成功。我知道我可能错误地传递了param“Func function”。我想避免匿名函数。thx.您可以将该方法作为
Lambda表达式传递:
Task<Task<int>> task = new Task<Task<int>>(() => DoWork(0,1), TaskCreationOptions.LongRunning);
publicsomeclass()
{
var func=新func((i1,i2)=>i1+i2);
Task.Factory.StartNew(()=>
Debug.WriteLine(func(1,2)),TaskCreationOptions.LongRunning);
Task.Factory.StartNew(()=>
Debug.WriteLine(DoWork(2,3.Result),TaskCreationOptions.longlunning);
}
私有静态任务DoWork(intA、intB)
{
返回任务.FromResult(a+b);
}
for任务
需要一个Func
参数
Task<int> task = Task<int>(DoWork(0,1));
然后你可以做:
Task<int> task = new Task<int>(() => DoWork(0,1), TaskCreationOptions.LongRunning);
Task Task=新任务(()=>DoWork(0,1),TaskCreationOptions.LongRunning);
DoWork
返回一个任务
而不是int
,因此它不会编译。
Task<int> task = Task<int>(DoWork(0,1));
private static int DoWork(int a, int b) { ... }
Task<int> task = new Task<int>(() => DoWork(0,1), TaskCreationOptions.LongRunning);