1

ユーザーの準備が整うのを待つために、その中で数回停止する必要がある同期プロシージャを実行するWPF(.Net 4.0を使用)アプリケーションにクラス関数があります。したがって、手順内で、ユーザーが「OK」をクリックするまで手順を一時停止するダイアログをいくつかポップアップする必要があります。

これを実装する最もクリーンな方法は何ですか?

代わりにダイアログを呼び出すように MainWindow に通知する関数を使用する方法がある場合、クラス関数を WPF ダイアログで混乱させることをためらっています。それとも、これについて心配する必要はありませんか?

4

2 に答える 2

1

アプリに関する詳細がわからないと正確な答えを出すのは難しいですが、次のようなものを使用します (コードは実際にはそのままコンパイルされない可能性があります)。

public class WaitForUserProcedureImpl : IWaitForUserProcedure
{
    public void DoSomething(Action pause)
    {
        // do stuff
        pause(); // pause
        // do more stuff
        // ....
        pause();
    }
}

public class MainWindow: Window
{

    private void button_click(object sender)
    {
        WaitForUserProcedureImpl proc = new WaitForUserProcedureImpl();
        Action myPauseAction = new Action(
            ()=>
            {
                MessageBox.Show("Press ok to continue","Press ok to continue",MessageBoxButtons.OK);
            }
        );
        proc.DoSomething(myPauseAction);
    }
}
于 2012-06-12T19:17:00.010 に答える
1

リファクタリングのより良い方法を決定するまで、以下を使用します。特定のアーキテクチャを知らなくても:

void MyLongProcedure() {
    // do some stuff
    if(GetDialog() == DialogResult.OK) { }

    // do some more stuff
    if(GetDialog() == DialogResult.OK) { }
}

DialogResult GetDialog() {
    return myDialog.ShowDialog();
}

手順を停止するオプションがある場合は、チェックを追加して、長い手順に適切な終了を実装できます。DialogResult.Cancel

于 2012-06-12T19:12:16.843 に答える