我有两个方法,method1,method2,它们都有 lock(App),其中 App 是同一类中的静态实例。
App是共享项目Helper中的静态实例
void method1()
{
lock(Helper.App)
{
ExcelApp.FormulaCell.AddComments(errMsg);
}
}
void method2()
{
lock(Helper.App)
{
//plot data (an 2-D array) to cells
var dataRng = ExcelApp.CurrentSheet.Cells(Formulacell.Row + 1, Formulacell.Column + 1);
dataRng = dataRng.get_Resize(n, m);
dataRng.Value2 = data;
}
}
method1、method2 被多个线程调用。我想一次只运行 method1 或 method2 问题是它们似乎没有。
在方法 1 和方法 2 中,我将一些数据绘制到 Excel 中,我得到了异常
名称:COMException 消息:来自 HRESULT 的异常:0x800AC472
我用谷歌搜索,发现异常是由于 Excel 应用程序未准备好引起的。没有 UI 手势,所以我认为异常是由两种方法同时尝试写入 Excel 引起的。