gpt4 book ai didi

c# - 处理异步和同步代码之间的界限?

转载 作者:行者123 更新时间:2023-11-30 23:07:50 25 4
gpt4 key购买 nike

我正在尝试编写一些异步 C# 代码,但我在理解 async.Wait() 的资源时遇到了一些麻烦。我已经阅读了很多线程和网站,但不知何故我仍然不确定如何/为什么我不应该使用等待。我的计划的目标是:

  1. 异步开始一些事情
  2. 做一些工作
  3. 等待 #1 完成。
  4. 做更多需要#1 才能完成的工作

我的任务是:

public static void Main()
{
Task t = DoWork();
DoMoreWork();
t.Wait();
DoWorkThatNeedsT();
}

public Task DoWork()
{
return Task.Run(() => {Thread.Sleep(1000);});
}

据我所知,在此实例中使用异步等待只涉及将 DoWork() 更改为以下内容:

public async Task DoWork()
{
return await Task.Run(() => {Thread.Sleep(1000);});
}

然后我在调用方法中还有一个.Wait()。这是否应该获得无线程异步的好处?我应该采用其他方式来实现这一点吗?

最佳答案

您所描述的不是 async/await 的用途。 Async/await 用于将线程释放回操作系统以供其他系统使用,同时系统等待它无法控制的事情(例如,等待 sql 语句在远程系统上完成)。

您想要的是与其他代码并行运行任务。使用 Task.Run但不要担心 async/await,因为你没有真正等待的东西。

Stephen Cleary - There is no thread是了解何时使用 async/await 的好书。

关于c# - 处理异步和同步代码之间的界限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46920868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com