问题描述如下:
1.在Form1中打开一个Form2
2.然后Form1开始一个while(true)的死循环任务
3.在任务拦右键Form2关闭这个窗口
4.问题出现了,这个时候连带Form1也一起关闭了,闪退掉了请问这个问题怎么解决?
winformc#

解决方案 »

  1.   

    【Form1】代码
    public partial class Form1 : Form
    {
            public Form1()
            {
                InitializeComponent();
            }
    //第一步点击这里,创建一个Form2
            private void button3_Click(object sender, EventArgs e)
            {
                new Form2().Show();
            }
    //第二步点击这里,执行一个while(true)死循环
            private void button2_Click_1(object sender, EventArgs e)
            {
                while(true)
                {            }
            }
    //第三步,点击WINDOWS任务栏里 Form2窗口右键,然后选择关闭,此时2个窗口都关闭了
    }【Form2】代码
    public partial class Form2 : Form
    {
    public Form2()
    {
        InitializeComponent();
    }
    }
      

  2.   


    while(true)
    {}==>while(true)
    {
        Application.DoEvents();
    }
      

  3.   

    while(true)是为了模拟一段需要较长时间执行的任务,所以难道要在这个任务内导出嵌入Application.DoEvents();?
      

  4.   

    yes 要不处理不了其他windows消息
      

  5.   

    好吧原来只能用这么原始的方法啊,THANK YOU啦
      

  6.   

    尽量不用多线程避免出更多BUG