日期:2014-05-16  浏览次数:21346 次

在线等!!Graphics g = Graphics.FromImage(bmp);对象在其他地方使用异常
如题,说明一下:我这句代码的调用 是在副线程中的,这个bmp对象 是Bitmap类型的,并且是从主线程中Clone出来的,我开始怀疑是不是因为是从主线程Clone出来的才引起这个问题的,结果我另开一个项目,在副线程中定义一个Bitmap,但还是会出现此问题。
另外,此问题不是随时会出现,是偶然。
求指点,我在网上找了一此资料,有说用Invoke解决的,但在我的这个里面不行。
------解决方案--------------------
引用:
如题,说明一下:我这句代码的调用 是在副线程中的,这个bmp对象 是Bitmap类型的,并且是从主线程中Clone出来的,我开始怀疑是不是因为是从主线程Clone出来的才引起这个问题的,结果我另开一个项目,在副线程中定义一个Bitmap,但还是会出现此问题。
另外,此问题不是随时会出现,是偶然。
求指点,我在网上找了一此资料,有说用Invoke解决的,但在我的这个里面不行。

根据楼主说的,我猜楼主是在"副线程"中对UI进行了操作, 可以将对UI的操作委托出去,在线程中invoke这个委托
------解决方案--------------------
第一,可能是在线程中操作UI报错,可以改用委托,第二,线程没有加锁,导致访问冲突
------解决方案--------------------
设置为单线程模式试试
Thread _thread = new Thread(new ThreadStart(testThread ));
_thread.SetApartmentState(ApartmentState.STA);

....

[STAThread]
 private void testThread ()
------解决方案--------------------
既然是访问冲突了
你就再生成一个bmp不就完了
纠结啥啊