相关疑难解决方法(0)

等待AsyncMethod()与等待等待等待Task.Factory.StartNew <TResult>(AsyncMethod)

给出以下方法:

public async Task<MyObject> DoSomethingAsync() {
    // do some work
    await OpenSomeFileAsync();
    return new MyObject();
}
Run Code Online (Sandbox Code Playgroud)

是否有区别:

public async void SomeEventHandler(EventArgs args) {
    var myObject = await await Task.Factory.StartNew<Task<MyObject>>( DoSomethingAsync);
    // do something with myObject
}
Run Code Online (Sandbox Code Playgroud)

和:

public async void SomeEventHandler(EventArgs args) {
    var myObject = await DoSomethingAsync();
    // do something with myObject
}
Run Code Online (Sandbox Code Playgroud)

我认为DoSomethingAsync的"做一些工作"部分会在第一种情况下立即发生在新任务中,但说实话我并不完全理解Task,async和await是如何工作的,而且我很漂亮我确定我只是为自己过度复杂.

编辑:

这个问题来自于查看这个Metro示例:http: //code.msdn.microsoft.com/windowsapps/Sharing-Content-Target-App-e2689782

特别是在MainPage.xaml.cs中,他们有:

var unused = Task.Factory.StartNew(async () => { // some work... });
// unused is of type Task<TResult>
Run Code Online (Sandbox Code Playgroud)

我试图在不使用匿名异步函数的情况下重做它,我开始想知道,为什么不写一个异步方法并等待它,而不是调用StartNew并交出一个异步函数?

c# asynchronous task async-await

9
推荐指数
1
解决办法
1万
查看次数

标签 统计

async-await ×1

asynchronous ×1

c# ×1

task ×1