在另外一个线程里面用了个messagebox,在主线程中调用Application.Exit();竟然无法把messagebox关掉........

解决方案 »

  1.   

    Application.Exit();不能把所有窗口关掉并退出吗?
      

  2.   

    .net里跨线程调用控件被视为不安全的,要调用的话应通过Invoke()函数
      

  3.   

    .NET里面出主线程外 其余调用UI都是不安全的 不推荐这样做
      

  4.   

    你想想messagebox是做什么用的就明白了
    在用户没有响应之前,是不可能退出的~
      

  5.   

    不要在非主线程中使用需要用户来操作的UI,尤其是模式的,block的...
      

  6.   

    不知道可否在自己定义的线程里面通过begin invoke来让主线程调用messagebox函数?
      

  7.   

    不知道可否在自己定义的线程里面通过begin invoke来让主线程调用messagebox函数?又或者用消息来代替直接的调用?
      

  8.   

    不知道可否在自己定义的线程里面通过begin invoke来让主线程调用messagebox函数?
      

  9.   

    不知道可否在自己定义的线程里面通过begin invoke来让主线程调用messagebox函数?
      

  10.   

    不知道可否在自己定义的线程里面通过begin invoke来让主线程调用messagebox函数?如果是windows窗体的话就可以在窗体类里面写一个this。invoke(mi)的函数,但是messagebox是一个不能继承的静态类...........
      

  11.   

    问题还没解决吗,如果没有的话,修改MessageBox的方式,采用如下的方式
    MessageBox.Show( this, yourMessage );
      

  12.   

    你把你的线程设为后台线程,试试thread.IsBackground = true;
      

  13.   

    我觉得很有可能如同Knight94(愚翁)所说的,
    使用MessageBox.Show(this,yourMessage);
    就可以很有可能你是没有指定MessageBox的Owner,使用的是
    Messagebox.Show(yourMessage);
      

  14.   

    呵,刚试了一下,直接用MessageBox.Show(this,yourMessage);
    不能跨线程调用Windows窗体控件