我想用await调用一个简单的方法。它看起来像这样:
private async Task<bool> Connect()
{
await Task.Delay(TimeSpan.FromSeconds(0.5));
IAsyncResult result = _socket.ConnectAsync();
var success = result.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(5), true);
return success;
}
我这样调用方法(来自异步方法):
bool cnnSuccess = await Connect();
但是当调用该方法时,它仍然阻塞了UI线程(xamarin.forms项目)。
我尝试在ConnectAsync调用中添加await:
IAsyncResult result = await _socket.ConnectAsync()
但这会产生编译错误:
无法将类型void隐式转换为System.IAsyncResult
有人能发现我做错了吗?
答案 0 :(得分:0)
您可以简单地将await
与ConnectAsync
方法调用一起使用,它不应该阻止调用者:
private async Task<bool> Connect()
{
await Task.Delay(TimeSpan.FromSeconds(0.5));
var result = await _socket.ConnectAsync();
//......... your code here
}
我不确定ConnectAsync
的返回类型是什么,因此您可以使用result
获取所需内容并从方法返回。