解决方案 »

  1.   

    参考这个帖子http://bbs.csdn.net/topics/390877297
      

  2.   

    跨线程操作窗体的方法:
    1、设置Control.CheckForIllegalCrossThreadCalls = false;
    2、使用委托
    当然还有其他方法
    你可以百度搜一下 C#跨线程操作控件
      

  3.   

    但是a方法没有执行完,也调用不了a方法,必须等a方法执行完了,才能进行操作了啊
      

  4.   

    用await和async 
    参考 http://www.cnblogs.com/LoveJenny/archive/2011/11/01/2230933.html
      

  5.   

    控件的操作是UI线程,后台数据量大,为了防止在UI线程操作导致假死的情况才用多线程
    一般是  多线程处理数据完毕之后,结果可保存到一些变量中,再才对UI线程进行赋值、布局等操作,这些赋值操作是很快的,不会导致假死。而后台另外一个线程在处理数据,也不会影响到UI线程,也就不会卡死
      

  6.   

    但是a方法没有执行完,也调用不了a方法,必须等a方法执行完了,才能进行操作了啊如果a方法执行时间太长无法忍受,就只能把它扔到一个新线程中执行或者在a方法中对耗费时间的地方使用子线程。但使用了子线程,就必须考虑到a方法中所做的某些修改造成的影响并解决。如果a方法有返回值,那后面要使用这个返回值的话,只能等待a函数结束并返回了。
      

  7.   

    最简单的办法就是用BackgroundWorker去执行耗时的操作,然后在界面上做相应的控制就可以了。
      

  8.   

    还有一个控件:backgroundworker,我经常使用这个来处理等待时间。