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它打开然后在它完成时关闭。碰撞部分发生在我第二次打开装载表格后。它说上面的消息。
答案 0 :(得分:2)
而不是我使用任务的线程,并打开加载屏幕作为对话框,以防止与主要表单的交互。
C++