我正在使用 3.5 版的 asyncbridge,但遇到了问题。 当我有一个返回 void 的方法时,我知道我必须返回一个任务。
但是下面的方法不行
public async Task PingAsync()
{
return await Task.Factory.FromAsync(client.BeginPing, client.EndPing, new object());
}
当我返回值时,它就像一个魅力,即返回等待Task.FromFactory....
我在这里遗漏了什么吗?
最佳答案
我怀疑你可以将其更改为:
public Task PingAsync()
{
return Task.Factory.FromAsync(client.BeginPing, client.EndPing, new object());
}
将其设为异步
方法没有任何好处 - 您只是尝试创建一个表示异步操作的任务,并且TaskFactory.FromAsync
会为你做到这一点。
如果您确实想要使用async
和await
,只需删除return
部分:
public async Task PingAsync()
{
await Task.Factory.FromAsync(client.BeginPing, client.EndPing, new object());
}
查看 FromAsync
的重载,我怀疑您可能需要 client.BeginPing()
而不是 client.BeginPing
...不清楚为什么要创建一个新的对象
作为状态,而不是仅仅使用null
。想必您没有使用该状态...
关于.net-3.5 - AsyncBridge.Net35.0.2.0,等待任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20946358/