如何等待一个ExcelUtilAsync任务

本文关键字:一个 ExcelUtilAsync 任务 等待 何等待 | 更新日期: 2023-09-27 18:16:20

我使用ExcelDNA作为插件。我有几个任务使用ExcelUtilAsync异步运行。运行,但当它们都完成后,我想运行一个函数格式化它们的所有输出,以返回到excel。我尝试使用屏障,但它不能返回值(我想,我是c#的新手)。我如何等待/加入这些任务?

如何等待一个ExcelUtilAsync任务

有很多方法可以做到这一点…这取决于你想如何/何时等待完成

一种非常简单的方法(假设您知道将运行多少任务)是使用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

相关文章: