問題タブ [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.

0 投票する
11 に答える
188259 参照

c# - .NET の ManualResetEvent と AutoResetEvent の違いは何ですか?

これに関するドキュメントを読みましたが、理解していると思います。AutoResetEventコードが を通過すると はリセットされますが、 はリセットされませevent.WaitOne()ManualResetEvent

これは正しいです?

0 投票する
6 に答える
9660 参照

java - Javaは.NetのAutoResetEventに相当しますか?

JavaでAutoResetEventと同等のセマンティクスを取得するには何を使用する必要がありますか?(ManualResetEventについては、この質問を参照してください)。

0 投票する
3 に答える
10090 参照

c# - AutoResetEvent での C# スレッドの問題

これを適切に同期する方法は?現時点では、完了SetData後に呼び出される可能性があるため、すでに別の値に設定されている可能性があります。ロックを挿入しようとしましたが、デッドロックになりました。e.WaitOne()d

最善の解決策は、truedataAlreadyBeenSetAndWaitingToBeProcessedに設定された新しいブール変数を導入SetDataし、最後にDoLongOperationWith_dtrue に設定できるようにするSetDataことでしょうか。この変数を true に設定して が呼び出された場合、単に戻ることができますか?

0 投票する
3 に答える
679 参照

c# - AutoResetEventコードの何が問題になっていますか?

私はこのコードを持っていますが、これは非常に簡単に見えますが、AutoResetEventが通知されることはありません。Webサービスから何も返されないようで、WaitAllは10秒後にタイムアウトします。スレッドジゲリーポケリーがなくてもすべて正常に動作するため、Webサービスの問題ではありません。私は何が間違っているのですか?

0 投票する
1 に答える
979 参照

.net - AutoResetEvent.WaitOne()はスレッドプールのスロットを解放しますか?

非同期メソッドを同期しようとしています。非同期バージョンの主な利点は、スレッドプールのスロットを解放することです。同期バージョンでもこの利点を維持したいと思います。AutoResetEvent.WaitOne()を使用すると、スレッドプールの使用に関してThread.Sleep()と同等になりますか?

0 投票する
1 に答える
187 参照

.net - AutoResetEvent オブジェクト、60 秒待機またはイベント

AutoResetEvent オブジェクトを使用してスレッドを 60 秒間ブロックしていますが、60 秒間または AutoResetEvent.set() イベントでブロックしたいと考えています。

コード :

しかし、それは常に60秒全体を待ちます! 信号を離しても。

0 投票する
4 に答える
6719 参照

c# - C#のキューと待機ハンドル

私のアプリケーションには数年前から次のコードが含まれていますが、問題が発生したことはありません。

CommandEventArrは、NewOrderEvent(自動リセットイベント)とExitEvent(手動リセットイベント)で構成されています。

しかし、これがスレッドセーフかどうかはわかりません(エンキューする前にすべてキューをロックするN個のプロデューサースレッドと、上記のコードを実行する1つのコンシューマースレッドを想定しています)。また、Queue.Countプロパティは、Queueクラスから1つのインスタンスInt32値を返すだけであると想定できます(揮発性、インターロック、ロックなどはありません)。

これを修正し、上記のコードで実行しようとしていることを実行するために、キューとAutoResetEventで使用される通常のパターンは何ですか?

(Queue.Countは何でも実行でき、その実装に固有であることが正しく指摘された後、質問を少し変更するように編集されました)。

0 投票する
4 に答える
6215 参照

c# - C#でのManual/AutoResetEventの軽量な代替手段

私は、C#/。NETでManualResetEventクラスとAutoResetEventクラスを使用する代わりの軽量な方法を作成しました。この背後にある理由は、カーネルロックオブジェクトを使用することの重みなしに、イベントのような機能を持つことでした。

コードはテストと本番の両方でうまく機能しているように見えますが、すべての可能性に対してこの種のことを正しく行うことは骨の折れる作業である可能性があり、これについてStackOverflowの群衆から建設的なコメントや批判を謙虚に要求します。うまくいけば(レビュー後)これは他の人に役立つでしょう。

使用法は、Set()に使用されるNotify()を使用したManual/AutoResetEventクラスと同様である必要があります。

ここに行きます:

0 投票する
4 に答える
2083 参照

visual-studio-2010 - ユニットテストはデバッグに合格しますが、実行時にハングします

奇妙な問題があります。実行モードでスタックし続ける単体テストがあります。ブレークポイントなしでデバッグで同じテストを実行すると、テストは毎回合格します。

基本的にはソケット接続テストです。最初にソケットを切断してから再接続を試み、再接続が成功したかどうかを確認しようとしています。

接続コードのどこかで、ソケット例外があったかどうかを確認します。これが発生すると、ユーザーにはダイアログにいくつかの選択肢が表示され、接続コードはAutoResetEventを介してハングし、決定を待ちます。

システムをハングさせるのはこのAutoResetEventです。単体テストのコードで提供する必要があります。しかし、私の質問は、なぜこれがデバッグモードで通過するのかということです。AutoResetEventsがVisualStudioによって自動的に設定されるデバッグモードについて何か特別なことはありますか?

編集

それは確かに競合状態でした。切断コードの後に​​コードに遅延を追加しましたが、現在は機能しています。しかし、そもそも競合状態があるのは奇妙なことです。コードの一部を貼り付けて詳しく説明します。

これはテストコードです:

これが私を襲う理由は、接続コードを呼び出す前に、diconnectコードが返されるのを待っているからです。切断コードの最後の部分は次のようになります。

Socket.Shutdown()やSocket.Close()メソッドがスレッドを実行しているためですか?したがって、切断コードから値を返しても、ソケットは実際には切断されていませんか?