C#同步和异步

异步和同步差异

在 C# 中,同步(synchronous)和异步(asynchronous)操作是指在执行某个任务时,控制流程(线程)的不同方式。


同步操作

会阻塞当前线程,直到操作完成并返回结果。在此期间,线程无法执行其他任务。例如,在读取文件时,如果使用同步方式,则代码会一直等待,直到文件读取完成。


异步操作

则不会阻塞当前线程。相反,它会在单独的线程中执行,同时允许控制流返回到调用方,使得调用方可以继续执行其他任务。当异步操作完成后,它会将结果返回给调用方,或者通过回调或事件通知调用方。

用例:

在 C# 中,可以使用关键字 async 和 await 来创建异步代码。使用 async 关键字标记异步方法,使用 await 关键字等待异步操作完成并返回结果。

例如,以下代码演示了如何使用异步方式读取文件:

using System;
using System.IO;
using System.Threading.Tasks;
class Program
{
    static async Task Main()
    {
        using (var reader = new StreamReader("file.txt"))
        {
            string contents = await reader.ReadToEndAsync();
            Console.WriteLine(contents);
        }
    }
}

在这个示例中,使用异步方式读取文件,以便在读取文件的同时,控制流能够继续执行其他任务,而不会阻塞在文件读取上。


果糖网