2010-09-06 132 views
0

我们的应用程序在启动时下载了大量数据。它需要所有操作的大部分数据。这是一个问题:只有在加载数据后才能执行一些操作。由于它异步加载,大多数用户操作会引发异常。
我试过AutoResetEvent.WaitOne(),但it doesn't work correctly

可以做些什么来避免它?提前致谢。异步加载数据的问题

回答

0

通过服务暴露您的数据,并暴露数据是否加载,加载,无法加载等指标。您的用户界面然后可以使用此指标来确定用户界面元素的可用性(通常通过命令)。

在数据加载之前,您绝对不应该阻止您的用户界面 - 这会破坏您被迫首先异步执行的全部目的。相反,您的用户界面应该根据数据的可用性在其加载时作出反应。

0

这不是一个Silverlight问题,它是一个普遍的生产者/消费者问题。

根据您的应用程序的确切环境和部分内容,有不同的方法。如果数据生成是非常快速的事情,并且只需要消费1个特定数据类型的单位,那么在消费者中,您可以轮询一次数据生成后更改的标志。或者,您可以向生产者提供一个函数/方法,以在数据填充后调用。通过这种方式,您可以将数据推送到仅显示可用内容的模块。

更复杂的例子将涉及排队和信号,但这应该让你开始。