使用事件的 observable,我从 Web 服务下载最新天气。我在家里的手机和模拟器上对此进行了测试,效果很好。我带着这个项目去工作,并在那里使用模拟器运行它。现在我不确定它是防火墙还是什么,但它似乎没有天气,它只是永远坐在那里,尝试。所以它让我想到,如果这发生在手机上,那么我需要某种暂停,如果它不能在 10 到 15 秒内得到天气,那就放弃吧。
这是到目前为止的示例代码
IObservable<IEvent<MyWeather.GetWeatherCompletedEventArgs>> observable =
Observable.FromEvent<MyWeather.GetWeatherCompletedEventArgs>(Global.WeatherService, "MyWeather.GetWeatherCompleted").Take(1);
observable.Subscribe(w =>
{
if (w.EventArgs.Error == null)
{
// Do something with the weather
}
});
Global.WeatherService.GetWeatherAsync(location);
如果什么都没有发生,我怎样才能让这个在给定时间后安全超时?