Ich suche eine Erweiterungsmethode mit der folgenden Signatur zu erstellen:Wie ein IObservable zurückzukehren <Dialogresult> von Showdialog
public static IObservable<DialogResult> ShowDialog(this Form form);
Ich weiß nicht, wie diese Arbeit zu bekommen. Das habe ich bisher:
Task<DialogResult> task = Task.Factory.StartNew(() =>
{
return form.ShowDialog();
});
return task.ToObservable();
Edit: Cool, danke Leute. Ich muss wirklich etwas mehr darüber lesen!
Warum willst du das? Und was denkst du wird passieren, wenn du UI in einem Nicht-UI-Thread arbeitest? –
Ich weiß es nicht. Ich bin wirklich neu und versuche, meinen gesamten Code asynchron mit reaktiven Erweiterungen zu schreiben. – potato
Bitte nicht. versuchen Sie nur Code Async auszuführen, wenn es Sinn macht. Sie sollten besser lesen, wenn Sie es anwenden und dann in einer guten Weise anwenden. Dies wird zwangsläufig fehlschlagen. Starre Worte, aber gut gemeinter Rat. Verwenden Sie es zum Beispiel, wenn Sie E/A-Vorgänge ausführen oder wenn Sie in einem separaten Thread mit hoher CPU-Leistung arbeiten müssen. Das Schreiben von Async-Code sollte kein Ziel sein, sondern ein Mittel, um bestimmte Probleme zu lösen. –