我对 Observables 有点陌生,所以我只是在寻找一个能让我朝着正确方向前进的例子(也许是教程?)。所以就在这里 - 我想创建异步Observable
并从中Exception
获取。这是我的例子:
protected IObservable<Tuple<DataPart1, DataPart2>> LoadAllDataFunc(string FileName)
{
return Observable.Start<Tuple<DataPart1, DataPart2>>(() =>
{
ConfigReaderWriter readerWriter = new ConfigReaderWriter();
try
{
readerWriter.UnpackFile(fileName, out DataPart1, out DataPart2);
return Tuple.Create(DataPart1, DataPart2);
}
catch (Exception exp_gen)
{
Observable.Throw<Exception>(exp_gen);
return null;
}
});
}
问题是我认为我没有Exception
正确投掷。例如 - 任何订阅者:
internal IObservable<DataPart2> GetProject()
{
if (this.GlobalDataPart2 != null)
return Observable.Return(GlobalDataPart2);
IObservable<Project> receivedData = null;
var loadAll = LoadAllDataFunc(this.GlobalFileName).Subscribe(
data => { receivedData = Observable.Return(data.Item1); },
(ex) => { Observable.Throw<Exception>(ex); }
);
return receivedData;
}
不会收到Exception
来自LoadAllDataFunc
?即使发生异常,订阅者也会收到null
.
那么 - 从 Observable 抛出异常的正确方法是什么?