【发布时间】:2017-04-30 13:39:04
【问题描述】:
我正在寻找具有以下签名的扩展方法:
public static IObservable<DialogResult> ShowDialog(this Form form);
我不知道如何让它工作。这是我目前所拥有的:
Task<DialogResult> task = Task.Factory.StartNew(() =>
{
return form.ShowDialog();
});
return task.ToObservable();
编辑:很酷,谢谢大家。我真的需要更多地阅读这些东西!
【问题讨论】:
-
你为什么要这个?如果您在非 UI 线程中进行 UI 工作,您认为会发生什么?
-
我不知道。我对此真的很陌生,并且正在尝试使用 Reactive Extensions 异步编写所有代码。
-
请不要。仅在有意义时尝试异步运行代码。您最好阅读何时应该应用它,然后以良好的方式应用它。这注定会失败。粗俗的话,但善意的建议。例如,在执行 I/O 操作或需要在单独的线程上完成繁重的 cpu 工作时使用它。编写异步代码不应该是一个目标,而是解决特定问题的一种手段。
标签: c# winforms system.reactive observable dialogresult