タグ付けされた質問 「backgroundworker」

13
別のスレッドが所有しているため、呼び出しスレッドはこのオブジェクトにアクセスできません
私のコードは以下の通りです public CountryStandards() { InitializeComponent(); try { FillPageControls(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Country Standards", MessageBoxButton.OK, MessageBoxImage.Error); } } /// <summary> /// Fills the page controls. /// </summary> private void FillPageControls() { popUpProgressBar.IsOpen = true; lblProgress.Content = "Loading. Please wait..."; progress.IsIndeterminate = true; worker = new BackgroundWorker(); worker.DoWork += …

4
WPFバックグラウンドワーカーの使用方法
私のアプリケーションでは、一連の初期化手順を実行する必要があります。これらの手順が完了するまでに7〜8秒かかり、その間にUIが応答しなくなります。これを解決するには、別のスレッドで初期化を実行します。 public void Initialization() { Thread initThread = new Thread(new ThreadStart(InitializationThread)); initThread.Start(); } public void InitializationThread() { outputMessage("Initializing..."); //DO INITIALIZATION outputMessage("Initialization Complete"); } 私はいくつかの記事を読みましたが、BackgroundWorker長いタスクを実行するためにスレッドを作成しなくてもアプリケーションの応答性を維持できるようにする方法を読みましたが、実装しようとして成功したことはありません。これを使用してBackgroundWorker?

11
BackgroundWorkerとバックグラウンドスレッド
Windowsフォームアプリで使用するバックグラウンドスレッドの実装の選択について、文体上の質問があります。現在、私はBackgroundWorker無限(while(true))ループを持つフォームを持っています。このループではWaitHandle.WaitAny、関心のあることが発生するまでスレッドをスヌーズし続けるために使用します。待機しているイベントハンドルの1つは「StopThread」イベントです。これにより、ループを抜けることができます。このイベントは、オーバーライドされたときに通知されForm.Dispose()ます。 BackgroundWorkerファイルをダウンロードしたり、一連のアイテムを処理したりするなど、UIと結び付けたくなくて限りのない操作を意図した場所で読んだことがあります。この場合、「終了」は不明であり、ウィンドウが閉じている場合のみです。したがってBackgroundWorker、この目的ではなくバックグラウンドスレッドを使用する方が適切でしょうか?

4
非同期/待機とBackgroundWorker
過去数日間、.net 4.5とc#5の新機能をテストしました。 新しい非同期/待機機能が気に入っています。以前、BackgroundWorkerを使用して、応答性の高いUIでバックグラウンドでより長いプロセスを処理していました。 私の質問は次のとおりです。これらの素晴らしい新機能を使用した後、いつasync / awaitを使用する必要があり、いつBackgroundWorkerを使用しますか?両方に共通するシナリオはどれですか?

8
バックグラウンドワーカーに引数を送信しますか?
intパラメータをバックグラウンドワーカーに送信したいとします。これはどのようにして実現できますか? private void worker_DoWork(object sender, DoWorkEventArgs e) { } これがworker.RunWorkerAsync();である場合はわかっていますが、worker_DoWorkでintパラメータを取る必要があることを定義する方法がわかりません。

18
BackgroundWorkerがキャンセルするのを待つ方法は?
あなたのために何かをするオブジェクトの架空の方法を考えてみましょう: public class DoesStuff { BackgroundWorker _worker = new BackgroundWorker(); ... public void CancelDoingStuff() { _worker.CancelAsync(); //todo: Figure out a way to wait for BackgroundWorker to be cancelled. } } どのようにBackgroundWorkerが完了するのを待つことができますか? 過去に人々は試みました: while (_worker.IsBusy) { Sleep(100); } しかし、このデッドロック、理由はIsBusy後になるまでクリアされないRunWorkerCompletedイベントが処理され、アプリケーションがアイドル状態になるまでそのイベントが処理取得することはできません。ワーカーが完了するまで、アプリケーションはアイドル状態になりません。(さらに、それは忙しいループです-嫌です)。 他の人はそれを提案するkludgingに追加しました: while (_worker.IsBusy) { Application.DoEvents(); } これに関する問題は、Application.DoEvents()現在キューにあるメッセージが処理され、再入可能性の問題が生じることです(.NETは再入可能ではありません)。 私は、コードがイベントを待つイベント同期オブジェクトを含むいくつかのソリューションを使用したいと思います-ワーカーのRunWorkerCompletedイベントハンドラーが設定します。何かのようなもの: Event _workerDoneEvent = new …

2
BackgroundWorkerのタスク並列ライブラリの置き換え?
タスク並列ライブラリには、BackgroundWorkerクラスの置き換えまたは改善と見なされるものがありますか? ウィザードスタイルのUIを備えたWinFormsアプリケーションがあり、長時間実行されるタスクを実行します。標準のプログレスバーと操作をキャンセルする機能を備えたレスポンシブUIを使用できるようにしたいと考えています。以前にBackgroundWorkerでこれを実行しましたが、代わりに使用できるTPLパターンがいくつかあるかどうか疑問に思っています。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.