我总是需要使用 async/await 吗?

Kot*_*984 3 c# collections multithreading asynchronous async-await

我想问你关于 async/await 的问题。也就是说,为什么总是需要使用它?(我的朋友都这么说)

示例 1。

public async Task Boo()
    {
        await WriteInfoIntoFile("file.txt");

        some other logic...
    }
Run Code Online (Sandbox Code Playgroud)

我有一个 Boo 方法,在其中我向文件写入一些内容,然后执行一些逻辑。这里使用异步,以便在将信息写入文件时流不会停止。一切都是合乎逻辑的。

示例 2.

public async Task Bar()
    {
        var n = await GetNAsync(nId);
        _uow.NRepository.Remove(n);
        await _uow.CompleteAsync();
    }
Run Code Online (Sandbox Code Playgroud)

但对于第二个例子,我有一个问题。为什么在这里异步获取实体,如果没有它的存在,仍然无法进一步工作?

Ste*_*ary 6

为什么总是需要使用它?

它不应该总是被使用。理想情况下(尤其是对于新代码),它应该用于大多数基于 I/O 的操作。

为什么在这里异步获取实体,如果没有它的存在,仍然无法进一步工作?

异步代码就是为了释放调用线程。这会带来两种好处,具体取决于代码运行的位置。

  1. 如果调用线程是 GUI 应用程序内的 UI 线程,则异步会释放 UI 线程来处理用户输入。换句话说,应用程序的响应速度更快。
  2. 如果调用线程是服务器端线程,例如 ASP.NET 请求线程,则异步会释放该线程来处理其他用户请求。换句话说,服务器能够进一步扩展。