2016-06-24 13 views
-2
私は

C#のWinフォームのロード画面

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

は、ユーザーとのやりとりを防止するための読み込みフォームの全体的なポイントですか? –

+0

@AlexWはい、ダウンロード機能としてデータなどをロードしています... – CAM

+0

http://stackoverflow.com/a/393870/366904 –

答えて

1

表示ローディング形式と無効に現在のフォーム。

this.Enabled = false; 

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

... 

loadingForm.Close(); 

this.Enabled = true; 
+0

良いアイデアは私にインスピレーションを与えますが、私のプログラムはMVPなので、Presenterでフォームを無効にしようとします。 – CAM

関連する問題