SL启动时的异步性......策略?

时间:2011-09-06 03:46:01

标签: silverlight silverlight-4.0 asynchronous startup

我在线程和异步操作方面远非新手,但SL似乎比大多数框架更容易出现异步问题,特别是操作的排序。这在启动时最为明显,当您需要完成一些事情(例如身份,授权,缓存变暖)之前(渲染用户可以使用的UI,呈现用户特定信息等)。

什么特定的解决方案提供了最佳(或至少是一个好的)策略来处理启动时的操作顺序?为了提供上下文,假设在确定用户角色之前UI不是真正可用的,并假设需要在“一般使用”之前进行几次WCF调用。

到目前为止,我的解决方案涉及选择性地启用UI控件直到“准备好”,但这会让人感到被迫并对“准备就绪”条件过于敏感。这也增加了我不喜欢的耦合(谁是?)。

2 个答案:

答案 0 :(得分:1)

要记住的Silverlight启动的一个有用方面是,在分配Application.RootVisual之前,将继续显示启动xaml。在某些情况下(例如,外部下载主题),最好保留RootVisual的分配,直到完成其他未完成的异步任务为止。

另一个有用的控件是Silverlight Toolkit中的BusyIndicator。也许当您准备好显示某些UI但没有填充UI的数据时,您可以使用具有BusyIndicator的页面分配RootVisual。

答案 1 :(得分:0)

在我的意见中:

  • 1st:渲染启动UI,告诉用户,应用程序确实注册了他的动作并且正在运行,(登录窗口可能是?)
  • 2nd:在后台发出必要的热身程序调用(WCF调用及所有这些),并让用户了解在下一个GUI可以运行之前需要完成的任务的进度(主窗口?)

操作顺序具体情况,但如果阻止他的输入,请务必让用户知道发生了什么。

单个控件的选择性启用看起来很有趣,但是用户可能会首先使用该功能并且它将被禁用,因此您必须确保用户知道原因,否则他会感到困惑,为什么一开始它被禁用,何时10分钟后他去了那里工作。还取决于程序的主要功能是什么以及禁用控件具有哪些功能。如果应用程序主要功能显示书籍列表,那么最后加载该列表并不好。