【问题标题】:Is it okay to not await async method call?不等待异步方法调用可以吗?
【发布时间】:2013-05-03 00:17:22
【问题描述】:

我有一个可以上传文件的应用程序。我不希望我的应用程序在文件上传期间停止,所以我想异步执行任务。我有这样的事情:

class Program
{
    static void Main(string[] args)
    {
        //less than 5 seconds
        PrepareUpload();
    }

    private static async Task PrepareUpload()
    {
        //processing

        await Upload();

        //processing
    }

    private static Task Upload()
    {
        var task = Task.Factory.StartNew(() => System.Threading.Thread.Sleep(5000));

        return task;
    }
}

异常正在内部处理,所以这不是问题。

可以像拍摄一样使用 async/away 并像这样忘记吗?

【问题讨论】:

  • 是的。如果您不需要等待,请不要等待。
  • 这不是一个坏习惯吗?
  • 这太基本了,不能被视为一种做法。这是一项您可能会使用也可能不会使用的操作,具体取决于您在特定环境中的需要。

标签: c# asynchronous async-await


【解决方案1】:

在控制台应用中,您需要等待。否则,您的应用程序将退出,终止所有正在进行的后台线程和异步操作。

【讨论】:

  • 这只是一个逻辑示例,实际代码是一个表单应用程序,上传后没有完成。
  • 在这种情况下,如果您确定愿意,可以进行即发即弃。 IMO,await 它同样简单。
  • 但是等待它会挂起应用程序直到上传完成,不是吗?
  • 没有。 await 是“异步等待”。该方法会等待它,但 UI 线程不会。
猜你喜欢
  • 2016-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-09
  • 1970-01-01
相关资源
最近更新 更多