gpt4 book ai didi

c# - 如何将此 lambda 表达式转换为异步/等待?

转载 作者:行者123 更新时间:2023-11-30 17:37:27 25 4
gpt4 key购买 nike

public bool Remove()
{
var itemsToRemove = activeQueue.Where(x => x.Value.CanRemove()).ToArray();
foreach(var item in itemsToRemove)
activeQueue.Remove(item.Key);

return passiveQueue.IsEmpty && activeQueue.Count == 0;
}

我想制作Remove等待方法 - public async bool Remove() .所以唯一阻塞的是CanRemove ,现在正在返回 Task<bool> .但我不确定如何制作它await .

更新:

public Task<bool> CanRemove()
{
return Task.Run(() => {
...
return false;
});
}

最佳答案

既然 Remove 不做任何真正的异步工作(例如 IO),而您担心的是您不想阻塞 UI 线程,那么我建议您保持同步(不要不要在方法中使用 Task.Runasyncawait),只使用线程池线程不阻塞 UI 线程在 UI 事件处理程序中。这是一个例子:

private async void button_Clicked(object sender, EventArgs e)
{
var result = await Task.Run(() => Remove());
//...
}

关于c# - 如何将此 lambda 表达式转换为异步/等待?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38028316/

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