我有两个方法,method1,method2,都有lock(App),其中App是同一个类中的静态实例。
应用是共享项目助手中的静态实例
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
问题是他们似乎没有。
在method1& method2,我将一些数据绘制到Excel中,我得到了Exception
名称:收到COMException 消息:来自HRESULT的异常:0x800AC472
我用Google搜索并发现异常是由Excel应用程序未准备好引起的。 没有UI手势,所以我得出结论异常是由两种方法同时尝试写入Excel引起的。
答案 0 :(得分:1)
请检查您是否要调用异步方法来进行分析 如果是这样,这就是问题,即使您使用了锁,实际的呼叫也在同一时间运行 试着等到excell方法结束 奥菲尔