在 C# 中,异步编程用于提高应用程序的响应能力,它允许在后台执行长时间运行的操作,同时释放 UI 线程用于其他任务。异步编程中使用的两个重要关键字是 和 。在本文中,我们将探讨这两个关键词之间的区别以及何时使用它们。awaitContinueWith
该关键字用于暂停异步方法的执行,直到等待的任务完成。这允许调用方法在等待任务完成时保持响应。关键字只能在标有修饰符的方法中使用,并且这些方法返回 或 。awaitawaitasyncTaskTask<TResult>
例:
public async Task<int> CalculateSumAsync(int a, int b)
{
int result = await Task.Run(() => Add(a, b));
return result;
}
在上面的示例中, 用于等待方法完成,然后再返回加法操作的结果。awaitTask.Run()
该方法用于定义任务完成后应发生的情况,即任务是成功、失败还是被取消。它链接其他任务,以便在初始任务完成时执行,而不管其结果如何。与 不同,不会暂停执行;相反,它会计划在任务完成后执行的延续。ContinueWithawaitContinueWith
例:
public async Task<int> CalculateSumAsync(int a, int b)
{
return await Task.Run(() => Add(a, b)).ContinueWith(task => {
Console.WriteLine("Task completed.");
});
}
在此示例中,在方法完成后,打印一条指示任务完成的消息。在这里,任务完成后,延续将异步运行,从而允许链接进一步的操作。Task.Run()ContinueWith
在继续该方法之前需要异步操作的结果时使用。它非常适合以下代码行取决于任务结果的方案。例如:await
当您想要计划应在异步操作完成后执行的其他任务(无论其结果如何)时使用。它在以下情况下是有益的:ContinueWith
总之,两者在 C# 异步编程中都起着至关重要的作用。当您需要暂停执行并等待任务完成时,通常会使用该关键字,从而实现响应式和高效的代码流。,则对于在不阻止调用方法的情况下将其他操作链接到任务非常有用。了解何时使用每种方法是编写干净、非阻塞和响应式异步代码的关键。