問題タブ [backgroundworker]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
multithreading - BackgroundWorker を使用したスレッド化
シナリオがあります。Windowsフォームに表示されるユーザーIDのリストがあります。ユーザー ID の 1 つをクリックするとすぐに、DB からユーザーの詳細を取得します。アプリケーションの応答性を維持するために、リストボックスの選択変更イベントで、新しい BackgroundWorker(BW) オブジェクトを作成して DB にアクセスします。ステータス バーに「ユーザー 'abc' を検索しています...」と表示されます。
ここで、ユーザーが矢印キーを使用して (4 ~ 5 回) ユーザー ID 間を移動すると、上記の設計により、要求を行うために複数の BW オブジェクトが作成されました。しかし、最終的に特定のユーザー (リストビューでユーザーが現在選択されているユーザーではない可能性があります) のデータが戻ってくると、非同期呼び出しだったため、ステータスバーにすべてのユーザーが表示されます。
私がやりたいのは、最後のユーザーだけの詳細を取得したいということです。それまでは「検索中のユーザー...」のみを表示したい。
この場合の解決策を教えてください...
c# - バックグラウンド ワーカーに制限はありますか? 技術的または常識
Program.cs には、5 つの SQL データベースをチェックして中央サーバーと同期する以下のメソッドがあります。それぞれが別のものであるため、すべてを同時に実行することで、プログラムのロード時間を短縮することを考えました。
残念ながら、一度は非常に不安定で、次はそうではありません。ローカル DB は SQLExpress 2005 で、中央 DB は SQL Server Standard 2005 です。
それらのいずれかが持つことができる接続の数に制限はありますか? バックグラウンド ワーカーはどうですか。一度に実行できる数は限られていますか? これを行うにはもっと雄弁な方法があると確信しています。それらを聞いて(見て)みたいです。
これは、Program.cs の Main() でこれを呼び出す方法です -->
if(IsSqlAvailable())
SyncNow();
c# - 複数の引数を受け入れる BackgroundWorker の代替ですか?
BackgroundWorker オブジェクトを使用すると、単一の引数を DoWorkEventHandler に渡すことができます。
複数の引数を渡すには、次の貧弱な文字列配列のように、それらをオブジェクトでラップする必要があります。
複数の引数を適切に渡すことを可能にする、または理想的には独自の署名を書くことを可能にする別のオブジェクトまたはパターンはありますか?
c# - チャートの更新を助ける
一緒に機能する 2 つの方法があり、それらは大きな double 配列 (1/1000000S 5000 アイテムごと) を作成し、この配列はチャート (Dundas チャート) を表示する必要があります。しかし、チャートは更新されていません。
私を助けてください!
私の悪い英語でごめんなさい!
この私のコード:
entity-framework - 非同期ObjectContext.SaveChanges()?
SaveChanges
(Winアプリ)の(Winアプリ)に変更を非同期で保存してもらいたいのですObjectContext
が、ユーザーが作業を続けている間、ユーザーにマーキー(または制御可能?)のプログレスバー(これは簡単に実装できます)を表示します。
SaveChanges
基本的にのをオーバーライドしたいObjectContext
。
誰かがこれについて以前に考えたことがありますか?
c# - WindowsでのスレッドセーフなFTPファイルフェッチデーモンの実装
基本的に、BackgroundWorkerコンポーネントを使用してFTPの場所からファイルをフェッチし、そこでのスレッドの安全性を保証する単純なデーモンの実装を開始しています。私は正しい方向に向かっているように感じますが、関連するテクノロジーに完全には精通していないため、アプリケーションのライフサイクル全体にあまり慣れていません。たとえば、処理方法がはっきりとわからないシナリオがあると言ってください。それでも、つまり、停止イベントをどうするか、ワーカーの実行中にサービスが停止した場合はどうなるかなどです。次のコードは、私が達成しようとしていることをほとんど表していないと思います。
ありとあらゆる提案を本当にいただければ幸いです。よろしくお願いします。
編集:FTPファイルのフェッチを再実装しました。
c# - 「このBackgroundWorkerは現在ビジーであり、複数のタスクを同時に実行することはできません」をスローするシリアルポートデータ処理に使用されるスレッド
シリアルポートからデータを取得して処理し、UIに表示するアプリケーションをC#で開発しています。データは5〜50ミリ秒の速度で非常に高速に送信されます。スレッドを使用していなかった前。そのため、アプリケーションは、シリアルポートからデータを取得し、データを処理してUIに表示する単一のアプリスレッドに依存していました。そしてそれはいくつかのデータを失っていました。次に、BackgroundWorkerスレッドの実装を開始して、単一スレッドのオーバーヘッドを取り除き、優れたパフォーマンスを考えました。そして今、私は「このBackgroundWorkerは現在ビジーであり、複数のタスクを同時に実行することはできません「エラー。スレッドはシリアルポートからのデータの速度に対応できないと思います。そのため、「backgroundWorker1.RunWorkerAsync(data);」の実行時にエラーが発生します。このような種類を実装するためのより良いアプローチは何か提案が必要です。シナリオの?
wpf - wpf スレッド化、バックグラウンドワーカー、ディスパッチャー
バックグラウンドワーカーとディスパッチャークラスができたので、従来の winforms スレッドの問題はもう問題ではありませんか?
multithreading - BackgroundWorkers を作成するスレッドが Completed イベントをキューに入れているようです
CPU が実際に使用されていないときに、イベントが 1 つのスレッドでキューに入っているように見える場合、BackgroundWorkers とそれらが起動するイベントの奇妙な動作に気付きました。
システムの基本的な設計は、ユーザーの操作に基づいてスレッドが作成され、Web 要求を送信してデータをフェッチするというものです。結果に基づいて、それぞれに対して BackgroundWorkers を使用して、他の多くの非同期リクエストを開始する場合があります。私がこれを行っているのは、リクエストを管理するコードがロックを使用して、一度に 1 つのリクエストのみが送信されるようにするためです (複数の同時リクエストでサーバーにスパムを送信し、サーバーがそれらを無視/ブロックする可能性があるため)。これにはもっと良い設計があるかもしれません.それを聞いてみたいです. ただし、デザインの変更に関係なく、私が見ている動作の原因を知りたいと思っています。
この問題を実証するために、比較的単純なテスト アプリを作成しました。これは基本的に、結果を表示するためのボタンとテキスト ボックスを備えた単なるフォームです (おそらく、フォームを使用せずにコンソールに結果を表示することもできますが、実際のアプリの動作を再現するためにこのようにしました)。コードは次のとおりです。
戻ってきた結果は次のとおりです。
ご覧のとおり、最初の「開始」メッセージが表示されてから 13 秒の遅延があり、その後約 15 個のメッセージを処理します (ほとんどのメッセージが起動されるまでに 2 秒の遅延があるにもかかわらず)。
何が起こっているか知っている人はいますか?
c# - バックグラウンド ワーカー スレッドから XAML 要素を変更するにはどうすればよいですか?
次のコード例では、TextBox の Foreground テキストの色をBackgroundThread から変更したいのですが、エラーが発生します。
このスレッドは別のスレッドにあるため、このオブジェクトにアクセスできません。
バックグラウンド ワーカー スレッドが TextBox の前景色を変更できるようにするには、以下のコードで何を変更する必要がありますか?
答え:
Andy に感謝します。ほんのわずかな見落としでした。後世のために修正されたコードを次に示します。