快去自定义|

园龄:粉丝:关注:

Task.Run(async () =>{}) 和 Task.Run(() =>{})区别

Task.Run(async () => { }):

  • Task.Run(async () => { }) 表示运行一个异步任务,传入的是一个异步 lambda 表达式。
  • 异步 lambda 表达式可以包含 await 操作符,允许在异步任务中等待其他异步操作完成。
  • 如果异步 lambda 表达式内部包含 await 操作,整个 Task.Run(async () => { }) 返回的是一个 Task 对象,可以通过 await 等待任务完成,并处理异步操作的结果。

示例:

csharp复制代码
Task task = Task.Run(async () =>
{
    await Task.Delay(2000);
    Console.WriteLine("异步任务完成");
});
await task; // 等待异步任务完成

Task.Run(() => { }):

  • Task.Run(() => { }) 表示运行一个同步任务,传入的是一个同步 lambda 表达式。
  • 同步 lambda 表达式不包含 await 操作符,表示任务是同步执行的,不会进行异步等待。
  • Task.Run(() => { }) 返回的是一个 Task 对象,表示任务执行完成。

示例:

csharp复制代码
Task task = Task.Run(() =>
{
    Console.WriteLine("同步任务完成");
});
task.Wait(); // 等待同步任务完成

区别总结:

  1. Task.Run(async () => { }) 表示异步任务,可以包含 await 操作进行异步等待,返回的是一个 Task 对象。
  2. Task.Run(() => { }) 表示同步任务,不包含 await 操作,任务是同步执行的,返回的也是一个 Task 对象。

根据具体的需求和场景,选择适合的方式来运行任务,可以有效地管理异步和同步操作,保证程序的正确性和性能。希望这个解释对你有帮助。如有任何疑问,请随时告诉我

本文作者:xxxyz

本文链接:https://www.cnblogs.com/xxxyz/p/18102034

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   xxxyz  阅读(1296)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起