无法在非'async'方法中使用'await'

时间:2014-06-10 04:53:40

标签: c# windows-phone-8 asynchronous async-await

我正在为Windows Phone 8开发,我正在尝试使用Windows.Networking命名空间连接到服务器。 (wp8中不支持System.Net套接字)所以我打电话来建立连接:

socket.ConnectAsync(e);

我得到错误“因为这个调用是不等的,执行...”这是公平的,因为这里应该使用await关键字。但是,当我将其添加到:

await socket.ConnectAsync(e);

我收到错误:“'await'运算符只能在异步方法中使用。”

这有点令人沮丧。我无法理解这对我正在调用的方法是如何工作的,因为这是一个预编译函数,带有签名:

public IAsyncAction ConnectAsync(EndpointPair endpointPair);

我该怎么办?在我有限的理解中,这似乎是.net的问题,并让我发疯!任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您需要 函数,即调用socket.ConnectAsync(e)的函数,异步。

void MyFunction()
{
    await socket.ConnectAsync(e);
}

让你看到错误。将其更改为

async Task MyFunction()
{
    await socket.ConnectAsync(e);
}