ReactriveX:在可观察的<bool> lambda 表达式上捕获异常



我有这个可观察的:

public class NetworkToolEngine
{
    public NetworkToolEngine()
    {            
        this.connectionAvailable = Observable
            .Interval(TimeSpan.FromSeconds(5))
            .Select(_ => true);
    }
}
static class Program
{
    static void Main()
    {
        NetWorkToolEngine networkToolEngine = new NetworkToolEngine();
        this.networkToolEngine.ConnectionAvailable
            .Do(_ => this.ConnectionAvailable())
            .Catch(ex =>    //<<<<<1>>>>>
            {
                this.ConnectionUnavailable();
                return Observable.Empty<bool>();
            });
    }

现在;我在<<<<<1>>>>>收到此编译错误:

无法将 lambda 表达式转换为类型"IObservable",因为它不是委托类型

有什么想法吗?

这是因为有多个 catch 重载,并且没有指定ex类型 - 它选择了错误的一个。你需要这样做:

.Catch((Exception ex) =>    //<<<<<1>>>>>
{
    this.ConnectionUnavailable();
    return Observable.Empty<bool>();
});

最新更新