日期:2014-05-18  浏览次数:20755 次

100求解:winform backgroundworker内调用控件,出现线程间操作无效

RT,后面使用System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;不会出现问题。不过只要有这句,在其他的操作中会造成UI卡住的情况,不使用就不会出现,后面经过百度,使用invoke来避免。
例如:
C# code

BackWork_DoWork(....){   textBox1.BeginInvoke((Action)delegate(){ ......textBox1.Text = "";});}


后面发现如果textbox.begininvoke中如果要执行的操作很多,就会出现backgroundworker执行完成了,但是textbox还没有赋值的情况,求解,是否有办法让textbox的invoke执行完成后,backgroundworker才执行结束(或者有更好的办法在backgroundworker中调用其他控件,注:我想在backgroundworker中执行的程序很多)

------解决方案--------------------
在iscomplete事件中写。
------解决方案--------------------
BeginInvoke
Invoke
同步去做不就完事了。
------解决方案--------------------
textBox1.BeginInvoke改为textBox1.Invoke就可以了
------解决方案--------------------
BeginInvoke是异步的,Invoke是同步的
------解决方案--------------------
路过学习,没有用过,帮顶