正确地写异步方法

本文关键字:异步方法 正确地 | 更新日期: 2023-09-27 17:49:23

我已经使用异步方法很长时间了,但是我不知道如何正确地编写我自己的异步方法。正如我所得到的,第一个根(我的意思是最深的)异步方法开始于同步方法包装在一个任务?我说的对吗?写这种方法的正确模式是什么?现在我是这样做的:

private async Task DoSomethingAsync()
{
    var tsk = new Task(OnDo);
    tsk.Start();
    await tsk.ConfigureAwait(false);
}
private void OnDo()
{
    // Do stuff ...
}

正确地写异步方法

实际的答案太长了,不能贴在这里。

简短回答

不,你不应该从同步方法调用异步方法。方法树应该是异步的,从下到上。

示例:使用ASP。asp.net MVC中的异步方法可以从async Action方法中调用,参见:在asp.net中使用异步方法。. NET MVC 4.

public async Task<ActionResult> GizmosAsync()
{
    ViewBag.SyncOrAsync = "Asynchronous";
    var gizmoService = new GizmoService();
    return View("Gizmos", await gizmoService.GetGizmosAsync());
}

使用WPF应用程序,你应该有async void事件方法,调用你的异步方法。

private async void button1_Click(object sender, RoutedEventArgs e)
{
    textBlock1.Text = "Click Started";
    await DoWork();
    textBlock2.Text = "Click Finished";
}

不管怎样,这个问题都太宽泛了。

  • 你们的"要实施"是什么?方法?
  • 为什么你希望它是异步的?
  • 您使用的是什么环境?

通常异步用于I/O操作(数据库,网络,文件读写)或并行性