*********************************************************************************************************************************************************
原网站:http://bbs.csdn.net/topics/190141481
正好这两天我也遇到同样的问题环境vs2005 C#
是一个类似qq的软件form1是用户名密码登陆,通信是用异步socket写的
如果登陆成功则
this.Visible = false;
Form2 form2 = new Form2();
form2.ShowDialog();
此时form2最大化,最小化,或者是
做一些其他操作的时候就会抛出未处理InvalidOperationException,Undo 操作遇到的上下文与相应 Set 操作中应用的上下文不同
,猜想可能与form2是由一个异步socket生成的有关,异步socket实际上就是生成子线程的,所以将
this.Visible = false;
Form2 form2 = new Form2();
form2.ShowDialog();
部分写为委托利用Invoke使其由主线程执行
更改后问题得到解决,原因仍然没有想明白,兄弟你也可以试验一下将可疑的操作都交给Invoke操作。
delegate void ShowForm2();
m_ShowForm2 = new ShowForm2(LogigShowform2);