なぜ私Silverlight BusyIndicator泊不可視を設定IsBusy=。
-
24-10-2019 - |
質問
私BusyIndicator作品として期待さDomainDataSource分取得します。その制御宿泊に見えない場合に設定しまIsBusy trueです。
私が使っているSilverlight4とのツールキットBusyIndicator.にーか行きのBusyIndicator.IsBusyプロパティにIsBusy性のDomainDataSourceます。のBusyIndicator制御ラップの主なグリッド(LayoutRoot)およびすべての子で制御できます。
<toolkit:BusyIndicator IsBusy="{Binding ElementName=labSampleDomainDataSource, Path=IsBusy}" Name="busyIndicator1">
<Grid x:Name="LayoutRoot">
</Grid>
</toolkit:BusyIndicator>
問題は、BusyIndicatorな場busyIndicator1=true;ボタンをクリックします。あらゆるアイデアないということは間違いだったのか?
解決
UIの更新ももちろんのUI。イベントなどで使用されるボタンをクリック"をダウンロードにUI。
一部の例の中で特定のプロパティに変更、メソッドの呼び出しに制御する方法として派遣されるUI。このメソッドが呼び出しはして実際に事故が発生した場合にまでUIのスレッドがご用意で実施するため(その他何でもすでにキューにアップされた実行). IsBusy
その部類に入る。
した場合にのみコードにUIのスレッドのUIを手に入れるチャンスを更新appeareance.すべきではないだけ電源をオンにする"という長期の課題がUIでthread.場合とまとめることができ、スレッドさせるための入札のUI飢餓状態のスレッドが使用できる仕事です。
代わりにしておくとよいでしょうの利用 BackgroundWorker
クラスと、全ての作業に DoWork
イベントで走行するタイプで異なるねじになります。
myButton_Click(object sender, RoutedEventArgs e)
{
isbusyindicator1.IsBusy = true;
var bw = new BackgroundWorker();
bw.DoWork += (s, args) =>
{
//Stuff that takes some time
};
bw.RunWorkerCompleted += (s, args) =>
{
isbusyindicator1.IsBusy = false;
};
bw.RunWorkerAsync();
}
このクリックイベントは終了非常に早く、UIのスレッドを使用すると更新のUIを実際の作業を背景にねじになります。完成時のIsBusyはクリアされます。