正确编写异步方法

谷歌

我已经使用异步方法很长时间了,但是我不知道编写自己的异步方法的正确方法。据我所知,第一个根(最深层的)异步方法是从包装在Task中的同步方法开始的?我对吗?编写此类方法的正确模式是什么?现在,我这样做:

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

private void OnDo()
{
    // Do stuff ...
}
安妮玛汀

实际答案太长,无法在此处发布。

简短答案

不,您不应该从同步方法中调用异步方法。方法树应该是自下而上异步的。

例如:使用ASP.NET MVC将从异步Action方法中调用异步方法,请参见:在ASP.NET MVC 4中使用异步方法

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

使用WPF应用程序,您应该具有异步void事件方法,该方法将调用异步方法。

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

无论哪种方式,问题都太广泛了。

  • 您的“待实施”方法是什么?
  • 您为什么要使其异步?
  • 您正在使用什么环境?

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章