C# 您可以使用Task.Run将CPU绑定的工作移动到后台线程
从 您可以使用Task.Run将CPU绑定的工作移动到后台线程 我的问题是,还有其他选择吗?如果我想使用C# 您可以使用Task.Run将CPU绑定的工作移动到后台线程,c#,multithreading,asynchronous,async-await,C#,Multithreading,Asynchronous,Async Await,从 您可以使用Task.Run将CPU绑定的工作移动到后台线程 我的问题是,还有其他选择吗?如果我想使用wait关键字,我必须返回Task,因此我必须使用Task.Run public static Task<int> LongProcess() { return Task.Run<int>(() => { //Long running return 5; }); } public async static
wait
关键字,我必须返回Task,因此我必须使用Task.Run
public static Task<int> LongProcess()
{
return Task.Run<int>(() =>
{
//Long running
return 5;
});
}
public async static void CallProcess()
{
int a = await LongProcess();
}
公共静态任务LongProcess()
{
返回任务。运行(()=>
{
//长跑
返回5;
});
}
公共异步静态void CallProcess()
{
int a=等待长过程();
}
上面的代码不是使用wait的唯一选项吗?如果没有,请显示其他选项好吗?如果我不使用Task.Run,为什么我需要异步/等待?这不仅仅是CPU密集型工作。通常情况下,您会使用async/await进行I/O工作,否则在等待文件系统、数据库或网络操作完成时会锁定线程。您只能有效地等待需要以某种方式创建的任务。无论是Task.Run()还是Task.Factory.StartNew(),或者新任务()后跟Task.Start(),如果要等待它,您仍然需要一个任务。您可以对任何可等待的对象使用
wait
。例如,任务
类有许多静态方法。请参见TaskCompletionSource
class。在不同的类中有很多*Async
方法。所有这些都可以与wait
一起使用。