Silverlight-Bestätigungsdialog zum Unterbrechen des Threads

Ich versuche, einen Bestätigungsdialog mit Silverlight durchzuführenChildWindow Objekt.

Idealerweise möchte ich, dass es so funktioniertMessageBox.Show(), wobei die gesamte Anwendung angehalten wird, bis eine Eingabe vom Benutzer empfangen wird.

Zum Beispiel:

for (int i = 0; i < 5; i++)
{
    if (i==3 && MessageBox.Show("Exit early?",
        "Iterator", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
    {
        break;
    }
}

Würde die Iteration bei 3 stoppen, wenn der Benutzer auf OK klickt ...

Wenn ich jedoch etwas in diese Richtung machen würde:

ChildWindow confirm = new ChildWindow();
confirm.Title = "Iterator";
confirm.HasCloseButton = false;
Grid container = new Grid();

Button closeBtn = new Button();
closeBtn.Content = "Exit early";
closeBtn.Click += delegate { confirm.DialogResult = true; confirm.Close(); };
container.Children.Add(closeBtn);

Button continueBtn = new Button();
continueBtn.Content = "Continue!";
continueBtn.Click += delegate { confirm.DialogResult = false; confirm.Close(); };
container.Children.Add(continueBtn);

confirm.Content = container;

for(int i=0;i<5;i++) {
  if (i==3) {
    confirm.Show();
    if (confirm.DialogResult.HasResult && (bool)confirm.DialogResult) {
      break;
    }
  }
}

Dies würde eindeutig nicht funktionieren, da der Thread nicht angehalten wird ...confirm.DialogResult.HasResult wäre falsch und die Schleife würde nach 3 fortgesetzt.

Ich frage mich nur, wie ich das richtig machen könnte. Silverlight ist Single-Threaded, daher kann ich den Thread nicht einfach in den Ruhemodus versetzen und ihn dann wieder aktivieren, wenn ich bereit bin. Ich frage mich nur, ob es noch etwas gibt, das die Leute empfehlen könnten.

Ich habe überlegt, die Logik umzukehren, dh die Aktionen, die ich ausführen möchte, an die Ja / Nein-Ereignisse weiterzuleiten, aber in meinem speziellen Fall würde dies nicht ganz funktionieren.

Danke im Voraus!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage