2
我有排隊一些計算的ExcelFunction:XlCall.Excel(XlCall.xlcCalculateNow)拋出一個XlCallException從一個BackgroundWorker事件觸發時
[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),則該函數的行爲與預期的相同。
正在做這樣的事情嗎?
ExcelAsyncUtil.QueueAsMacro(...)工作。我花了幾個小時試圖使用RDT服務器或RxExtensions,但缺乏示例阻礙了使任何工作成功。基本上,我想查詢一些Web服務進行計算,將響應緩存在加載項中,並通過Excel函數提供對緩存響應的屬性的訪問。那裏有一個可以指導我的工作示例嗎? – yenta 2013-04-09 15:44:08
也許你可以試試這個例子:http://excel-dna.net/2013/04/02/caching-and-asynchronous-excel-udfs/,然後通過http://groups.google.com發佈到Google小組。 com/group/excedna跟進問題。 – Govert 2013-04-09 17:01:45
我錯過了那篇文章,感覺有點愚蠢。謝謝,我會看看。 – yenta 2013-04-09 19:28:53