問題タブ [autoresetevent]
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.
c# - C# AutoResetEvent WaitOne がディスパッチャによって停止されました
上記のコードは、2 つの grdMain.Dispatcher.Invoke(...); をコメントアウトした場合に完全に機能します。*.Set(); をコメントアウトすると、完全に機能します。および *.WaitOne(); でもなんで?両方必要です^^。理解できません...
c# - System.Threading.Timer をより効率的に使用できますか
コードをより効率的にするためのアドバイスを探しています。私がやりたいことは、System.Threading.Timer
1 時間ごとに何らかのジョブを実行することです。ジョブはそれほど重くはなりませんが、リソースをあまり消費しないコードが必要です。このコードを Windows サービスで実行する予定です。
これは私がこれまでに持っているものです。
皆さんはどう思いますか?コードをより効率的にすることはできますか?
すべてのアドバイスは大歓迎です!
c# - AutoResetEvent + Background Worker の連携
これら 2 つが連携して機能しているとは確信していないため、これら 2 つが連携して機能することについて質問があります。
バックグラウンドワーカーを使用するコードがいくつかあり、 DoWork() 内でいくつかのロジックを実行します。このロジックは、単純に TcpClient オブジェクトを使用して、データを外部デバイスに送信します。
私の質問は、AutoResetEvent.WaitOne() を呼び出す DoWork() 内にあります。AutoResetEvent.Set() が呼び出されるまで、これは現在のスレッドを停止しますか? たとえば、AutoResetEvent.Set() がまったく呼び出されない場合、バックグラウンド ワーカーは単純に停止し、操作を実行しませんか?
これが本質的に悪い設計であるかどうかはわかりませんが、残念ながらそれをサポートしています:(
いくつかの擬似コードを編集します
c# - C# で autoresetevent を使用してファイルを読み書きする
スレッド同期の簡単なプログラムを作成しました。しかし、このプログラムを実行すると、「別のプロセスで使用されているため、プロセスはファイル 'D:\Vivek.txt' にアクセスできません。」というエラーが表示されます。このエラーが発生する理由。
のコードを置き換えると
に
プログラムは初めて同じエラーを表示します。その後、エラーが発生することはありません。バグの領域、理由、および最善の解決策を教えてください。
c# - AutoResetEvent Set 直後にリセット
次のパターンを検討してください。
このパターンの目的は、外部コンシューマーが特定のイベント (メッセージの到着など) を待機できるようにすることです。WaitForNextEvent
クラス内からは呼び出されません。
よく知られている例として、 を考えてみましょうSystem.Diagnostics.Process
。イベントを公開しますが、プロセスが終了するまで呼び出し元が同期的に待機できるようにExited
するメソッドも公開します。WaitForExit
これが私がここで達成しようとしていることです。
私が必要な理由は、既に呼び出された後signal.Reset()
にスレッドが呼び出された場合 (つまり、スレッドが待機していないときに呼び出された場合)、イベントが既に通知されているため、すぐに戻るためです。WaitForNextEvent
signal.Set()
.Set
質問
- スレッド呼び出しが呼び出される前
WaitForNextEvent()
に通知されることが保証されていますか? そうでない場合、メソッドを実装するための他のソリューションは何ですか?signal.Reset()
WaitFor