問題タブ [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 投票する
1 に答える
354 参照

c# - AutoResetEventオブジェクトを制限されたWaitHandleでラップしますか?

スレッドを起動してそれを実行し、WaitHandleを呼び出し元に返すライブラリを構築しました。

バグレポートを見ると、ライブラリを呼び出しているコードが、返されたオブジェクトを取得してAutoResetEvent(つまり)にキャストし、フラグ自体を上げているのではないかと思います。それをするためのものではありません。

AutoResetEventオブジェクトを、WaitOne'dおよびWaitAny'dのままで、コードでのみ発生させることができるオブジェクトでラップする方法はありますか?

ありがとう。

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

.net - .NET AutoResetEvent: プロセスが待機しているかどうかを知る方法 (WaitOne メソッド)?

プロセス メソッド "WaitOne" を呼び出します。プロセスが待機中の場合は、別のメソッドを知る必要があります。

¿WaitHandle についてこれを知ることができますか?

宣言:

電話:

編集

処理は、イベントにより、データ要求が送信されるまで待機し、データを受信するとメソッド「WaitHandle.set()」を実行します。

ただし、ユーザーはプロセスのキャンセルを要求することもできます。その要求では、プロセスが待機しているかどうかを知る必要があります。

0 投票する
2 に答える
1996 参照

c# - WaitOne 状態の AutoResetEvent シグナルが原因で、アプリケーションの終了後もスレッドが存続する

メッセージを処理するキューで AutoResetEvent (WaitOne/Set) を使用するアプリケーションがあります。Visual Studio (Shift + F5) からデバッグ セッションを終了すると、アプリケーションの元のプロセスがハングアップすることに気付きました (常にではありません)。手動でデバッガーをプロセスに再接続すると、単一のスレッドが WaitHandle.WaitOne で停止していることがわかります。

だから私の質問は、WaitOne 状態にある可能性のあるスレッドを終了する正しい方法は何ですか?

頭に浮かんだ最初の答えは、Application Exit イベントをリッスンし、そこで Set を実行することでしたが、これらのデバッグ セッションの後にこのイベントが確実に呼び出されたのか、それとも私が認識していないより標準的な方法があるのか​​はわかりませんでした。の。

そして、2 番目の質問として、「プロダクション」モードで実行されているアプリケーションでは、これを別の方法で処理しますか?

0 投票する
2 に答える
2165 参照

c# - C#メインスレッドは、シグナリングを使用して2番目のスレッドによってブロックされていますか?

GetFilesを呼び出す2番目のスレッドを作成しCopyFilesます。ファイルがコピーされるたびにリストボックスにファイル名を入力しようとしていますが、コードが行にヒットすると:

メインスレッドがブロックされます。アイデアはありますか?

0 投票する
2 に答える
1130 参照

c# - AutoResetEvent プロセス?

イベントをデキューしたら、イベントを false に設定する必要がありますか?それとも、イベントが戻ってきたとき、_queueNotifier.WaitOne()または正確にどのように機能するかによって、それ自体で false に戻りますか?

代わりに以下の例のようにインナー while を使用する必要がありますか、それとも両方の方法で問題ありませんか。

0 投票する
0 に答える
165 参照

multithreading - WaitOne がタイムアウトするまでタイマー イベントが発生しない

新しいデータをチェックするために定期的に起動するタイマーがあります。場合によっては、タイマーをすぐに開始する必要があり、続行する前にタイマー ハンドラーが処理を実行するのを待つ必要があります。メインスレッドが待機する AutoResetEvent をハンドラーに設定させようとしましたが、これは機能しませんでした。WaitOne への呼び出しがタイムアウトになるまで、タイマーは起動しませんでした。System.Timers.Timer と System.Threading.Timer を使用してみましたが、同じ結果が得られました。私が間違っていることについてのアイデアはありますか?

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

c# - ObservableCollectionの更新非同期でハングし、GUIの更新がありません

結果がリストボックスに送られるWPFに(学習演習として)Tracertのビジュアルバージョンを実装しています。問題は、(1)tracertDataViewにバインドされたリストボックスが更新されていないが、(2)アプリケーション全体がハングしていることです。

#2はスレッドの問題であると確信していますが、(正しい方法で)修正する方法がわかりません。さらに、「DoTrace」の結果を更新/バインドする私のテクニックが正しいかどうかわかりません。

これがApp.xamlの私のデータソースです

App.xaml.cs

これがMainWindowコードです

FYI内部実装インスタンスオブジェクト「traceWrapper.DoTrace」の詳細

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

c# - Windows Phone 7.1: AutoResetEvent はサービス メソッドで動作しませんか?

電話アプリケーション (たとえば、http://www.deeptraining.com/webservices/weather.asmx?op=GetWeather ) にサービス参照を追加した後、エミュレーションの同期メソッド呼び出しに AutoResetEvent を使用しようとしました。ただし、WaitOne を呼び出した後は、メソッド Set が呼び出されることはありません。なんで?バグですか?

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

c# - 新しいスレッドからの Dispatcher.Invoke が UI をロックしています

私は wpf を使用しています。UI にボタンがあります。

ユーザーがクリックすると、autoresetevent を使用して新しいスレッドで新しいメソッドを実行する for ループがあります。

その新しいスレッドのそのメソッドでは、ラベルを使用しています。lblStatus と呼びましょう。UIにないこのスレッドのラベルを更新したい。wpf を使用すると、Dispatcher.Invoke を使用する必要があります。

ここに私のコードのサンプルがあります:

プログラムはここで停止します。ラベルの内容は変更されず、UI に戻りますが、ブロックされます。
私はもう試した

も同様ですが、それも機能していません。何か案は?