gpt4 book ai didi

C# 等到条件为真

转载 作者:IT王子 更新时间:2023-10-29 04:26:54 27 4
gpt4 key购买 nike

我正在尝试编写一个在满足条件时执行的代码。目前,我正在使用 while...loop,我知道它不是很有效。我也在看 AutoResetEvent() 但我不知道如何实现它以便它一直检查直到条件为真。

代码也恰好存在于异步方法中,所以某种等待可能会起作用吗?

private async void btnOk_Click(object sender, EventArgs e)
{
// Do some work
Task<string> task = Task.Run(() => GreatBigMethod());
string GreatBigMethod = await task;

// Wait until condition is false
while (!isExcelInteractive())
{
Console.WriteLine("Excel is busy");
}

// Do work
Console.WriteLine("YAY");
}


private bool isExcelInteractive()
{
try
{
Globals.ThisWorkbook.Application.Interactive = Globals.ThisWorkbook.Application.Interactive;
return true; // Excel is free
}
catch
{
return false; // Excel will throw an exception, meaning its busy
}
}

我需要找到一种方法来继续检查 isExcelInteractive() 而 CPU 不会陷入循环。

注意:Excel 中没有不处于编辑模式时会引发的事件处理程序。

最佳答案

至少您可以将循环从忙等待更改为慢速轮询。例如:

    while (!isExcelInteractive())
{
Console.WriteLine("Excel is busy");
await Task.Delay(25);
}

关于C# 等到条件为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29089417/

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