Ben*_*Ben 3 c# vb.net silverlight multithreading asynchronous
我有一个具有纯静态方法和属性的类.我在类"Load"上调用异步方法,该方法向Web服务请求一大块数据,然后触发执行返回方法"LoadCompleted"的事件.我不知道调用要花多长时间(调用"Load"方法,然后调用"LoadCompleted")之间的区别.
我想阻止应用程序继续进行,直到引发回调方法(因为应用程序将尝试从此类中获取内容,在"LoadComplete"方法设置数据之前不会填充该内容).我该怎么做呢?
在极端偏见的情况下应该避免阻止主UI线程.
我会使用BusyIndicator
Silverlight Toolkit中的控件: -
<UserControl x:Class="StackoverflowSpikes.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit">
<toolkit:BusyIndicator x:Name="busyInd" >
<Grid x:Name="LayoutRoot">
<!-- The rest of your content -->
</Grid>
</toolkit:BusyIndicator>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
在致电Load
使用之前: -
busyInd.IsBusy = true;
Run Code Online (Sandbox Code Playgroud)
然后LoadComplete
使用: -
busyInd.IsBusy = false;
Run Code Online (Sandbox Code Playgroud)
这将锁定UI上的用户输入而不会阻塞主线程,并使用一些反馈来解释为什么他们现在无法点击任何内容.您可以使用该BustContent
属性为忙碌消息提供自己的内容.当然,如果你不喜欢它的外观,你可以根据自己的喜好设计它.
如果要获取所有MVVM,可以将IsBusy
属性绑定到VM属性,该属性指示VM现在不需要任何更改.
归档时间: |
|
查看次数: |
344 次 |
最近记录: |