Fat*_*dağ 3 .net c# asynchronous iasyncresult async-await
我需要创建等待 IAsycnResult 方法完成的机制。我怎样才能做到这一点?
IAsyncResult result = _contactGroupServices.BeginDeleteContact(
contactToRemove.Uri,
ar =>
{
try
{
_contactGroupServices.EndDeleteContact(ar);
}
catch (RealTimeException rtex)
{
Console.WriteLine(rtex);
}
},
null );
Run Code Online (Sandbox Code Playgroud)
任务工厂有一个专门用于此目的的方法:Task.Factory.FromAsync。
var task = Task.Factory.FromAsync(
contactGroupServices.BeginDeleteContact(contactToRemove.Uri),
ar =>
{
try
{
_contactGroupServices.EndDeleteContact(ar);
}
catch (RealTimeException rtex)
{
Console.WriteLine(rtex);
}
});
Run Code Online (Sandbox Code Playgroud)
您可以通过调用 来阻止直到完成task.Wait,但这在大多数情况下会死锁(例如,如果从 UI 线程调用)。
您可能想将其放入异步方法中:
async Task M()
{
...
await Task.Factory.FromAsync(
contactGroupServices.BeginDeleteContact(contactToRemove.Uri),
ar =>
{
try
{
_contactGroupServices.EndDeleteContact(ar);
}
catch (RealTimeException rtex)
{
Console.WriteLine(rtex);
}
});
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7431 次 |
| 最近记录: |