問題タブ [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# - Cannot use AutoResetEvent.WaitOne() and Thread.Sleep in STAThread
In my program, the main function starts a background thread which creates an object that I need in the UI thread (uses Windows Forms, thus marked [STAThread]).
Simplified code:
#xA;However, res
becomes false and the field kernel
remains null in the main thread, even if I set a breakpoint at the lock statement. Also, using Thread.Sleep
in the Main
function would return immediately, without sleeping.
So it seems to me that probably [STAThread]
puts restrictions to these methods?! Is that true, and what is a good way to circumvent this? In my case, I could probably mark the main thread as non-STA and then run an STA thread later on (did not try that yet), but is there a general solution?
c# - waitany(Array) は実際にイベントを「設定」しますか、それともシグナルされたイベントのインデックスを返すだけですか
http://msdn.microsoft.com/en-us/library/tdykks7z.aspx
ドキュメントによると、戻り値は次のとおりです。
「待機を満たしたオブジェクトの配列インデックス。」
つまり、インデックスは設定されたイベントを表し、このコードはそれ自体を待機しているため、デッドロックを引き起こします。
そして、このコードは正しいでしょう:
(私の謙虚な意見では)ドキュメントが100%明確ではないため、確認したいだけです
編集:
@Hans Passantが指摘したように、私の設計には欠陥があり、セマフォを使用する必要がありました。N 個の yahooRequests が関数にアクセスできるようにしたかったためです。しかし、@arno は技術的に最初の質問に答えます。承認済みの回答を 2 つ設定できたらいいのにと思います
編集:
また、コメントで@Sriram Sakthivelが指摘したように、最初の例はそれ自体を永遠に待ちます。しかし、実際にはデッドロックではありません。
c# - マルチスレッドでのシグナリングの問題
アルバハリのスレッド記事リンクから「プロデューサー/コンシューマーキュー」を実装していました->
以下のこの記事の作業方法で、 Console.WriteLine("In waiting state .... 1")のようなコンソール書き込みを _wh.WaitOne()の 前に追加すると、シグナリングが機能せず、Consumer スレッドが無期限に待機しているように見えます.
誰かがこの動作を説明できますか?
c# - 待機ハンドルの使用
私はこのようなことをしようとしています:
コードの他の場所には、以下を呼び出すメソッドがあります。
したがって、LongRunningOperation() が実行されます。
問題は、スレッドの実行handler.Set()
中に が再度呼び出される可能性があることです。AsyncWait()
LongRunningOperation()
これにより、がまだ実行されている間に が呼び出さLongRunningOperation()
れるたびに、 が呼び出されることはありません。handler.Set()
AsyncWait()
LongRunningOperation()
これを正しくする方法は?:(
c# - AutoResetEvent 自体がトリガーされます
AutoResetEvent の動作がおかしい
Utilsクラスにコードがあります:
そして、聞いているときのコードがあります:
それは次のように呼ばれました:
この場合、最初に WaitOne が呼び出されると、(タイムアウトしたように) すぐに false が返されます。2 回目は問題ありませんが、デバッグ出力に「DownloadStringAsinc が完了しました」というメッセージさえありません。メインスレッドから Utils.FileDownloaded.WaitOne(2222) を呼び出していたとき (正しくないことはわかっていますが、テストしているだけです)、想定どおりに機能しました。しかし、ブロックをスレッドに移動すると、この動作が現れました。また、後のブロックの「if」ステートメントの前に Thread.Sleep(200) を作成すると、すべて正常に動作します
追加する必要があります: Utils クラスのコードは、異なる場所から同時に呼び出されません。
私は次のように考えるかもしれません:「このアプリケーションの問題は解決しました」。しかし、それは私の頭では解決されていません。私は理解しなければなりません。
windows - setEvent は ResetEvent なしで呼び出されます
手動リセット イベントが setEvent を使用して設定されているが、ResetEvent を使用してリセットされていない場合はどうなりますか。そのイベントは複数回トリガーされます。つまり、イベントが処理されている間、再びイベントが設定されます。
サンプル タスクは次のとおりです。
ここで、hEvent1 のケースが実行中 (つまり、まだ設定されている) に、何らかの形で再び hEvent1 がトリガーされたとします。手動リセット イベントですが、意図的に ResetEvent(hEvent1) を配置していません。では、競合状態はありますか?
windows-phone-8 - 別のスレッドで実行されるイベント ハンドラーの割り当て
Windows Phone 8 の画像キャプチャ コードを、基本的に持っているレガシー モデルに適合させようとしています。
...
...
AutoResetEvent が呼び出されたときに実行がブロックされないように、別のスレッドで完了したイベントを実行するイベント ハンドラーを取得する方法はありますか?
c# - C# でのシグナリング スレッドのパフォーマンス
私は、次のようなブロッキング構造を待機しているスレッドを「ウェイクアップ」するのにどれくらいの時間がかかるかを理解しようと試みてきましたAutoResetEvent
. (またはそう)次に、どのスレッドが次に実行される予定かを決定するため、そのスレッドがウェイクアップするまでのスレッドへのシグナル通知の時間差には、0〜15.6ミリ秒のランダムな時間がかかると予想されます。そこで、私の理論をテストするために、この小さなプログラムを書きました。
驚いたことに、平均ウェイクアップ時間は約 0.05 ミリ秒でした。