既然开张了,顺手放些杂记吧!

1. .Net 多线程编程中的异常处理:

     如果子线程出现异常,而在该子线程中此异常没有被处理,则此异常会被向上抛出到此子线程的父线程。
比如 主线程为UI线程,它启动了一个线程A, 而线程A 有启动了一个线程B, 在线程B运行时,B抛出了一个未被处理的异常,则A线程首先捕获此异常,如果A未处理此异常则A也不会将此异常抛给主线程。也可以认为这种多线程的异常,只会向上一层父线程抛一个层次。

2. GDI+ 的问题:
   如果你的 Image 是通过一个流(stream)创建的,那么,在你对这个Image 进行保存(写入到磁盘)操作时,要保证构建这个Image的Stream 还是存在的。所以,这个 Image 和 Stream 的生命期应该是相同的。否则.Net会抛出 A generic error occurred in GDI+. 异常。
   分析:因为在 .Net 所有对象的访问,都是通过指针进行的,所以,如果 Stream 过早的被 销毁. 那么等稍后 Image 对象需要写入到 内存时,发现已经找到内存位置了。所以会抛出异常。

3. P/Invoke 问题:
          在进行 P/Invoke 时,C++端的导出函数包含一个 默认参数,那么在 C#端一定要显示的传递这个参数,否则,等调用到了C++端时,

      这个默认参数不会自动   被压入堆栈,而此时,就会取到栈上的一个随机值。会发生错误。


4. WinForm 窗体中控件 Size 改变的问题:

          有时后,我们需要改变一个控件的Size, 代码中调用 new Size(widht, height) 或者调用了 SetBound(...)函数 设置了控件大小后
      发现控件的大小并未变为我们指定的值,此时,请更改此控件的 AutoSize 属性为 false.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值