2013-05-03 91 views
7

我有一个应用程序将上传文件。我不希望我的应用程序在文件上传过程中停止,所以我想要异步执行任务。我有这样的事情:可以不等待异步方法调用吗?

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并忘记这样?

+0

是的。如果你不需要等待,不要等待。 – SimpleVar 2013-05-03 00:27:01

+0

这不是一个坏习惯吗? – 2013-05-03 00:30:21

+1

这太基本了,不能算做惯例。这是一种您可能会或可能不会使用的操作,具体取决于您在特定环境中的需求。 – SimpleVar 2013-05-03 15:44:55

回答

9

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

+0

这只是一个逻辑的例子,实际的代码是一个Forms应用程序,并没有完成上传后。 – 2013-05-03 00:52:38

+0

在这种情况下,如果您确实想要做一次即忘即忘的行为。国际海事组织,“等待”它同样简单。 – 2013-05-03 00:56:02

+0

但等待它会挂起应用程序,直到上传完成,不是吗? – 2013-05-03 00:56:50