c#winform加载屏幕

c#winform加载屏幕,c#,.net,winforms,async-await,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

我想在函数中添加一个加载表单

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();
    });
}

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

this.Enabled = false;

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

...

loadingForm.Close();

this.Enabled = true;

加载表单的全部目的是防止用户交互吗?@AlexW是的,作为下载功能,加载数据等等…@CodyGray在启动应用程序时不显示初始屏幕。加载屏幕用于等待“大”function@CodyGray这不是一个重复的案例……好主意,给了我灵感,但我的程序是MVP,所以我将尝试在Presenter禁用表单。