ReactriveX:在 Observable<bool> 上捕获异常作为 lambda 表达式

Jor*_*rdi 2 c# system.reactive

我有这个可观察的:

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>();
            });
    }
Run Code Online (Sandbox Code Playgroud)

目前; 我在以下位置收到此编译错误<<<<<1>>>>>

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

有任何想法吗?

Evk*_*Evk 5

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

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