C# 学习笔记-多线程操作、异常排除

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼听禅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值