在多线程中不能直接执行与界面有关的代码,假如涉及到界面,那就虽然使用到InvokeRequired、Invoke或者委托、 事件
既然你不能使用InvokeRequired和Invoke那就使用委托和事件
至于委托是不是属于线程的,那有什么关系呢?

解决方案 »

  1.   

    console的主线程是main啊,主线程出不了main啊,主线程到main的},整个程序就结束了,怎么叫通知主线程执行方法啊,主线程就一个main方法。console的多线程只是让main执行到某一句停住而已。
    第二,你的winform窗体那也不是主线程啊,主线程还是main,窗体只是main创建的第一个对象,但是mian只有这一句(大意),才显得像主线程,其实他只是运行在主线程上的一个对象,但是他的特点是主要不关闭,main就没法继续执行,窗体关闭后,main还会继续执行}这个才完。
    要想达到你说的这种,先弄一个类,像form类一样不关就卡住main不动的那种,然后main以单线程创建实例,这样这个实例就在主线程了,从这个类里开线程,然后用委托回调,这样就你说的子线程通知主线程了,很奇怪的一个程序。
      

  2.   

     委托+事件
    用法参考:http://msdn.microsoft.com/zh-cn/library/ms173176(v=VS.80).aspx
      

  3.   


    您看问题确实透彻
    我的主线程确实不是控制台因为我做的二次开发,主程序加载我的dll不知道能不能在dll中获取主窗口的句柄构造form,这样就可以使用invoke了,在主线程中调用方法。