私は 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 から例外をスローする正しい方法は何ですか?