1
我使用ExcelDNA作爲插件。我有幾個任務使用ExcelUtilAsync.Run異步運行,但是當他們完成後,我想運行一個函數來格式化他們的所有輸出以返回到excel。我嘗試使用Barrier,但它不能返回一個值(我認爲,我是c#的新手)。我如何等待/加入這些任務?如何等待ExcelUtilAsync任務?
我使用ExcelDNA作爲插件。我有幾個任務使用ExcelUtilAsync.Run異步運行,但是當他們完成後,我想運行一個函數來格式化他們的所有輸出以返回到excel。我嘗試使用Barrier,但它不能返回一個值(我認爲,我是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