1

DevExpress を初めて使用する会社で、9.3 を使用して立ち往生しています。

この非常に小さなコード スニペットがあります。

        wait = new DevExpress.Utils.WaitDialogForm("Please wait...", "Performing SVN check");
        wait.Visible = false;

        wait.ShowDialog();
        ParseSVNResults(CheckSVN());
        wait.Close();

私の WaitDialog は表示されますが、コードは続行しません。ParseSVNResults にブレークポイントを設定し、コードを実行するとその行に到達します。

ShowDialog() の代わりに Show() を呼び出すと正しく動作しますが、ユーザーが Wait フォームの外側をクリックすると、動作が低下します。アプリケーションが応答を停止したように「白くなり」、マウスが回転する小さな円形のアイコンに変わります。また、ダイアログ フォームに表示される砂時計も回転しません。些細なことですが、エンド ユーザーにはアプリケーション全体がクラッシュしたように見えます。

4

1 に答える 1

3

ShowDialog、設計上、ダイアログを閉じるまでコードを「ブロック」します。それが全体の目的です。

すべてが白くなる原因Show()は、作業が UI スレッドで行われているためです。これを処理する適切な方法は、作業 ( ParseSVNResults) をバックグラウンド スレッドに移動することBackgroundWorkerですTask

于 2013-10-08T17:56:04.493 に答える