使用事件中的可观察事件,我从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);
我怎么能在给定的时间后,得到这个时间安全撤离,如果没有是怎么回事?
我不记得我在哪里读过它,但我听说使用Timeout并不是最好的选择,因为它会导致异常和其他问题。 – Gaz83 2012-04-13 11:26:52