如何从ShowDialog返回IObservable <dialogresult>

时间:2016-12-15 03:21:04

标签: c# winforms system.reactive observable dialogresult

我正在寻找使用以下签名创建扩展方法:

public static IObservable<DialogResult> ShowDialog(this Form form);

我不知道如何让它发挥作用。这就是我到目前为止所做的:

Task<DialogResult> task = Task.Factory.StartNew(() =>
{
    return form.ShowDialog();
});
return task.ToObservable();

编辑:很酷,谢谢你们。我真的需要再读一些这些东西了!

1 个答案:

答案 0 :(得分:0)

我想这会奏效,但我不明白这一点。

public static class Extensions
{
    public static IObservable<DialogResult> ShowDialogObservable(this Form form)
    {
        return Observable.Create<DialogResult>(o =>
        {
            o.OnNext(form.ShowDialog());
            return Disposable.Empty;
        });
    }
}