关闭后打开表单会导致崩溃

时间:2015-10-28 12:13:47

标签: c# .net multithreading forms

Loading loadingForm = new Loading();
        private void btnSend_Click(object sender, EventArgs e)
        {
            Thread loading = new Thread(new ThreadStart(startLoading));
            loading.Start();
            new Thread(() => sendEmail()
            ).Start();
        }
        public void closeLoading()
        {
            if (loadingForm.InvokeRequired)
                loadingForm.Invoke((MethodInvoker)delegate ()
                {
                    closeLoading();
                });
            else
                loadingForm.Close();
        }
        public void startLoading()
        {
            if (loadingForm != null)
                Application.Run(loadingForm);
            else
            {
                loadingForm = new Loading();
                Application.Run(loadingForm);
            }
        }

基本上这个代码应该在一个线程中打开一个Loading表单,并在另一个线程中执行一些其他的处理。

但是我的应用程序崩溃了,如果我在加载表单完成加载后关闭一次并再次按下“发送”按钮。它说要确保表格仍然存在,如果没有发布。所以在StartLoading中,我只是检查我的表单是否不是“null”。它永远不会成为其他部分。如果我做loadingForm = new Loading();在开始加载时没有任何其他东西,它将打开表单并保持在那里,永远不会关闭。从第二个线程中的进程调用closeLoading。

我该如何解决这个问题?我一直收到错误,以确保我的表格没有发布

编辑:

我不知道我是否足够清楚。

关闭部分工作。因此,如果我打开装载形式ONCE它打开然后在它完成时关闭。碰撞部分发生在我第二次打开装载表格后。它说上面的消息。

1 个答案:

答案 0 :(得分:2)

而不是我使用任务的线程,并打开加载屏幕作为对话框,以防止与主要表单的交互。

C++