この長い投稿は大変申し訳ありません。私はC#wpfの問題についていくつかの助けが必要です。私は複雑なUI(何とか)を構築しており、スタートやストップなどのボタンがいくつかあります。長い処理を実行するWPFユーザーインターフェイスがハングアップする
私がスタートボタンをクリックすると、実行プロセスはいくつかのプロトコルレイヤーなどとの通信から始まり、長いプロセスです。このプロセスでは、「テキストを入力」、「選択」 Something "など...私はいくつかのwpfウィンドウオブジェクトを表示する必要があります...今度は、私は自動的にウィンドウを破壊し、再度処理する必要があります。
まず、メインウィンドウクラスで実行を実行しようとしました。しかし、実行が開始されると、ユーザーは何もクリックすることができず、UIは応答しません。私はこの問題を調査し、UIがプロトコル層での処理に忙しくて応答しないことが分かった。ここで
は私の問題です... uは私に- 私は2 button..startを持っていると停止します...いくつかの解決策を与えることができます
- 私は、スタートボタンをクリックし ... Processorという名前の関数で大規模なプロセスが開始されます(50秒間続く大きな整数のforループ)。
- 処理時に、プロセッサはいくつかのウィンドウを作成し、5〜10秒待ってそれらを破棄することを示します。またはユーザーがクリックすると、ウィンドウ上に表示されます
- そして、停止ボタンをクリックしたときに停止ボタンをクリックできるようになるまで、そのプロセスは停止する必要があります。
バックグラウンドワーカー、ディスパッチャー、別スレッドを使って試しました。運がない。私は何かが足りないと思う。なぜなら、私はウィンドウを表示しているいくつかの結果を待っているからです。ウィンドウは間違いなくハングしてしまいます。もし私が別のスレッドでそれらを分ければ、それはお互いに通信しません。私にいくつかの提案をしてください
'Dispatcher'は、CPUが非常に集中している場合でもUIをロックすることができますが、' BackgroundWorker'はうまく動作するはずです。 BackgroundWorkerで試したコードを表示できますか? – Rachel