关闭在另一个线程中创建的表单

Dav*_*ave 6 c# multithreading winforms

我一直在寻找我的特定问题的答案,但没有成功.

我的程序中有一个任务需要几秒钟,我想在完成任务时显示一个新表单.新表单有一个加载栏和一些文本.

我需要显示与任务并行的新表单,否则任务将无法启动,直到我关闭新表单.

这是我现在的解决方案:

private void loadingBar()
{
    frmLoading frm = new frmLoading("Please wait while the database is being backed up", "This might take several days.");
    frm.ShowDialog();  

}

public void Backup()
{
    Thread load = new Thread(new ThreadStart(loadingBar));
    load.Start();

    ///Execute a task.

    load.Abort(); 
}
Run Code Online (Sandbox Code Playgroud)

所以,这个工作正常,但我的问题是:在加载线程中关闭"frm"形式以使其停止不是更好吗?

Ben*_*dEg 1

您可以在类级别声明表单,然后通过调用将其关闭。 MSDN-Windows 窗体调用

像这样:

    public class Class1
{
    private Form myForm;

    public Class1()
    {
        myForm = new Form();
    }

    public void DoSomeWork()
    {
        // ===================================================
        // Do Some Work...
        // ===================================================

        myForm.Invoke(new MethodInvoker(this.Hide));
    }

    public void Hide()
    {
        myForm.Hide();
    }

    public void Backup()
    {
        myForm.ShowDialog();

        Thread load = new Thread(new ThreadStart(DoSomeWork));
        load.Start();
    }
}
Run Code Online (Sandbox Code Playgroud)