1.异常解决
1.1 关于创建调用提示非单线程的问题
调试过程中,创建多线程调用Excel时提示:在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记
解决方法是,设置线程属性为单线程:
Thread threadPrintLayout = new Thread(new ParameterizedThreadStart(ThreadPrintLayout));
//设置单元状态
threadPrintLayout.SetApartmentState(ApartmentState.STA);
threadPrintLayout.Start(layout);
2.关于无法捕获的异常
2.1 AccessViolationException异常
当代码尝试读取或写入尚未分配或无法访问的内存时,非托管或不安全代码中会发生访问冲突,并报AccessViolationException错误。如果异常发生在公共语言运行库保留的内存之外,则公共语言运行库抛出的AccessViolationException异常不会由catch结构化异常处理程序中的语句处理,需要在方法前添加HandleProcessCorruptedStateExceptionsAttribute特性,需要添加System.Runtime.ExceptionServices引用。
using System.Runtime.ExceptionServices;
/// <summary>
/// cmb_Items selection changed.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[HandleProcessCorruptedStateExceptionsAttribute]
private void Cmb_Items_SelectionChanged(object sender, SelectionChangedEventArgs e)