c#winform加载屏幕

时间:2016-06-24 06:35:42

标签: c# .net winforms async-await

我想在函数

中添加加载表单
private async void Test()
{
    // 1, show loading form

    await DoTest();

    //2, close loading form
}

加载表单需要阻止主表单,首先,我尝试运行表单ShowDialog(),但它会停止以下函数

这样做最好的主意是什么?

我的最终解决方案:

private async void Test()
{
    // 1, show loading form
    var loadingScreen = new LoadingForm();
    Task.Factory.StartNew(delegate
    {
        Invoke((Action)delegate
        {
            loadingScreen.ShowDialog(App.Views.Forms.RobotActiveView);
        });
    });

    await DoTest();

    //2, close loading form
    Invoke((Action)delegate
    {
        loadingScreen.Close();
    });
}

1 个答案:

答案 0 :(得分:1)

显示加载表单并禁用当前表单。

this.Enabled = false;

var loadingForm = new LoadingForm();
loadingForm.Show();

...

loadingForm.Close();

this.Enabled = true;