我有一个使用Silverlight导航应用程序模板构建的应用程序。
我有一个主窗体(例如MainPage.xaml)和一堆Silverlight Pages,它们在主内容区域内外交换。
在MainPage.xaml中,我有一个DispatcherTimer,它可以访问一些Uri资源,无论我在哪个页面。它时不时会莫名其妙地停止射击。
我知道它与各种页面的范围有关。 MainPage.xaml中的页面是否可以从其父页面中删除范围?
或者这更简单了吗?
答案 0 :(得分:2)
如果您使用的是运行在Dispatcher线程(xaml)上的DispatcherTimer
(这是用于构建UI的线程),则会更加简单,然后Timer会在阻塞时触发通过在同一个线程上运行的另一个动作。
此操作可能是之前的WebGet调用(不太可能,因为那些将是异步调用),或者更可能是您使用返回值执行操作可能非常耗时,或者某些页面可能需要比其他页面更多的时间来构建其UI内容,因此当线程空闲时,Dispatcher事件可能会排队并触发。
我建议您遵循构建Silverlight应用程序的MVVM架构风格,通过这样做,您可以从ViewModel运行您的计时器和WebGet调用,该调用在不受UI影响的不同线程上运行,因此不受转换的影响页。