Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight 加载表单和繁忙指示器的方法_Silverlight - Fatal编程技术网

Silverlight 加载表单和繁忙指示器的方法

Silverlight 加载表单和繁忙指示器的方法,silverlight,Silverlight,我正从asp.net“缓慢”进入Silverlight,我有一个问题,就是如何处理在web服务调用完成后需要执行某些代码的情况。例如,当用户单击数据网格中的行时,将显示一个对话框,允许编辑记录。它包含许多组合框、复选框等。因此,我需要首先为每个组合框加载数据,然后在所有组合框加载完毕后,我需要设置绑定实体。因为我不熟悉这个异步的东西,所以我想用一种计数器来跟踪发出了多少个调用,当它们完成时,将它们减少一个,直到它为零,在这一点上,我可以引发一个load已经完成的事件,我可以继续进行依赖于此的操作

我正从asp.net“缓慢”进入Silverlight,我有一个问题,就是如何处理在web服务调用完成后需要执行某些代码的情况。例如,当用户单击数据网格中的行时,将显示一个对话框,允许编辑记录。它包含许多组合框、复选框等。因此,我需要首先为每个组合框加载数据,然后在所有组合框加载完毕后,我需要设置绑定实体。因为我不熟悉这个异步的东西,所以我想用一种计数器来跟踪发出了多少个调用,当它们完成时,将它们减少一个,直到它为零,在这一点上,我可以引发一个load已经完成的事件,我可以继续进行依赖于此的操作。但这种方式似乎很笨拙。我相信很多人都面临过这个问题,那么你是如何做到的呢。如果有帮助的话,我们将Prism与MVVM方法结合使用,将Ria服务与DTO结合使用。

您所描述的方法基本上是可行的。你可以用锁和互斥锁做一些更优雅的事情,但是你的计数器可以工作。它的好处是,您可以看到在任何时候有多少操作仍在“进行中”

您可以按顺序调度事件,但这将破坏异步操作的全部目的


如果您分析了UI的每个部分需要什么,那么您可能能够在所有异步事件完成之前执行一些操作。确保首先启动运行时间最长的操作可能会有所帮助,但不能保证其他较短的操作会首先完成。这完全取决于调用时客户端和服务器上都有哪些可用资源。

我认为SL中内置了一些魔力。可以使用async CTP中的“等待”和“异步”来实现这一点吗?@epitka-如果有,我还没有找到它。异步CTP听起来似乎可以解决这类问题,但我们的最后期限很紧,因为它不是v1.0,所以我们不能使用它。我们应该在新的一年里开始。