0

コンテンツがロードされる前に進行状況バーを表示し、進行状況バーを数秒間渡す必要があるという点で Silverlight アプリケーションを構築してから、閉じる必要があります..

system.threading.thread.sleep(1000) を使用していますが、UI がフリーズします。

UIをフリーズせず、プロセスがしばらく待つ必要があるSilverlightの代替が必要です...

4

1 に答える 1

1

デフォルトでは、すべてが UI スレッド上にあるため、時間のかかるタスクは UI をブロックします。これを防ぐには、実行をバックグラウンド スレッドにプッシュします。これを行う 1 つの方法は次のTask.Factoryとおりです。

Task.Factory.StartNew( () => {
    Thread.Sleep(1000);
});

その後、UI で何かをしたい場合 (そうすると思います)、UI スレッドに戻る必要があることに注意してください。(バックグラウンド スレッドが UI を変更しようとすると、ランタイムは例外をスローします。) Dispatcherを使用してそれを行います。

Task.Factory.StartNew( () => {
    // sleep on a background thread
    Thread.Sleep(1000);

    // when complete, return to the UI thread to prevent access violation
    Application.Current.Dispatcher.BeginInvoke( () => {

        // do UI stuff here
    });
});
于 2013-07-19T02:55:32.567 に答える