如何等待一个ExcelUtilAsync任务
本文关键字:一个 ExcelUtilAsync 任务 等待 何等待 | 更新日期: 2023-09-27 18:16:20
我使用ExcelDNA作为插件。我有几个任务使用ExcelUtilAsync异步运行。运行,但当它们都完成后,我想运行一个函数格式化它们的所有输出,以返回到excel。我尝试使用屏障,但它不能返回值(我想,我是c#的新手)。我如何等待/加入这些任务?
有很多方法可以做到这一点…这取决于你想如何/何时等待完成
一种非常简单的方法(假设您知道将运行多少任务)是使用CountdownEvent
。像这样:
// Define how many tasks will be run via ExcelAsyncUtil
var countdownEvent = new CountdownEvent(2);
ExcelAsyncUtil.Run("Task1", null, handle =>
{
try
{
// Do work for Task 1
}
finally
{
countdownEvent.Signal();
}
});
ExcelAsyncUtil.Run("Task2", null, handle =>
{
try
{
// Do work for Task 2
}
finally
{
countdownEvent.Signal();
}
});
// Wait for all of them to finish (blocking)
countdownEvent.Wait();
// All async tasks have been completed
// (...)
你也可以看看Excel-DNA中的AsyncAwaitMacro的例子:https://github.com/Excel-DNA/Samples/tree/master/AsyncAwaitMacro