いくつかの計算をキューに入れる ExcelFunction があります。
[ExcelFunction(...)]
public static void QueueCalcs(... takes ranges ...)
{
var calcRequests = ... builds list of calc request parameters from ranges ...
calcRequests.ForEach(QueueCalculation);
}
public static void QueueCalculation(calcRequestParameters)
{
var bWorker = new BackgroundWorker();
bWorker.DoWork += bWorkerDoWork;
bWorker.RunWorkerCompleted += bWorkerRunWorkerCompleted;
bWorker.RunWorkerAsnc(calcRequestParameters);
}
private static void bWorkerRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
XlCall.Excel(XlCall.xlcCalculateNow);
}
ワーカーは正常に完了しますが、OnComplete デリゲートは次をスローします。
Exception of type 'ExcelDna.Integration.XlCallException' was thrown
バックグラウンド ワーカーを削除し、通常の foreach ループに続いて XlCall.Excel(XlCall.xlcCalculateNow) を呼び出すと、関数は期待どおりに動作します。
このようなことは可能ですか?