これを行う方法はありますか?Silverlightイベントを発生させ、さらに1秒後に別のイベントを発生させます
背景: 私はボタンをクリックしています。ボタンがクリックされると、私は「読み込み中」のメッセージを表示しようとし、いくつかのUI作業を行うコードを実行し、「読み込み中」のメッセージを閉じます。通常数秒から20秒の間でどこでもかかります。現時点では、ロードメッセージはまったく表示されず、ボタンがクリックされるまでUIがフリーズします。
バックグラウンドワーカーとディスパッチャについては読んだことがありますが、動作させることができませんでした。ボタンクリックのコードが(サードパーティのものを含めて)あらゆる種類の他のコードを呼び出すためですが、それが正しく動作するようにはできていないからです。それでもすべて動作しますが、UIはフリーズして読み込みメッセージは表示されません。
これを回避する別の方法があるのでしょうか。それは、ボタンをクリックするだけで、私は長時間実行しているプロセスを実行する別のイベントを起動し、ローディングメッセージを表示し、次に2番目またはそれ以降のようにそれを設定することは可能ですか?そうすれば、UIはまだ数秒間フリーズしますが、少なくとも「読み込み中」のメッセージが表示されます。
BackgroundWorkerを使用すると、UIがフリーズせずに問題がすべて解決されます。あなたはそれでどんな問題に遭遇しましたか? BackgroundWorkerの重要なトリックは、UI要素のメソッドを呼び出すときにDispatcher.Invoke()を使用する必要があることです。 –
本当にわかりません。私はBackgroundWorkerとDispatcherを使用し、アプリケーションはボタンのクリック後にアプリケーション全体をフリーズすることを含めて正常に機能しました。この問題は、スレッドやUIに関連するものではないかもしれません。プロセスが完了するまでに時間がかかるかもしれない。私はCPUが50%になるのを見ています。何か大きなことが起こっていない限り、通常は起こりません。 – dtc
チャート要素自体の呼び出しのような音が遅いです。 System.Threading.Timerはあなたが探しているものです。 –