gpt4 book ai didi

c# - 等待 IAsyncResult 函数完成

转载 作者:行者123 更新时间:2023-11-30 16:07:43 24 4
gpt4 key购买 nike

我需要创建等待 IAsyncResult 方法完成的机制。我怎样才能做到这一点?

IAsyncResult result = _contactGroupServices.BeginDeleteContact(
contactToRemove.Uri,
ar =>
{
try
{
_contactGroupServices.EndDeleteContact(ar);
}
catch (RealTimeException rtex)
{
Console.WriteLine(rtex);
}
},
null );

最佳答案

任务工厂有一个方法:Task.Factory.FromAsync .

var task = Task.Factory.FromAsync(
contactGroupServices.BeginDeleteContact(contactToRemove.Uri),
ar =>
{
try
{
_contactGroupServices.EndDeleteContact(ar);
}
catch (RealTimeException rtex)
{
Console.WriteLine(rtex);
}
});

您可以通过调用 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);
}
});
...
}

关于c# - 等待 IAsyncResult 函数完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30391193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com