スレッドは、私が持っていると仮定します。次に何が起こるのですか?処理が完了し、別のイベントが発生するか、新しいイベントが新しいスレッドですぐに発生しますか?イベントや
Q
イベントや
5
A
答えて
2
どのようにイベントがタイプ(ethernet_adapter
オブジェクト)によって発生したかに応じて、何でもかまいません。
同期操作の場合、現在の操作が実行されるまで新しいイベントは発生しません。
非同期操作の場合は、新しいイベントがすぐに発生します。 (あなたの例のように)
protected virtual void OnPacketArrived(PacketArrivedEventArgs e)
{
EventHandler<PacketArrivedEventArgs> handler = this.PacketArrived;
if (handler != null)
{
handler(this, e);
}
}
限り処理同期加入者のすべての加入者を介して内部列挙をブロックする:
2
これは同期操作である可能性があります。別のスレッドで発生する唯一の方法は、イベントを発生させるオブジェクトが別のスレッドで実行するか、ハンドラで処理するかどうかです。これを行う方法は数多くありますが、.NET 4を使用する場合はSystem.Threading.Tasks.Task
を使用するのが一般的です。
アプリケーションをどのように動作させるかを慎重に検討してください。単に新しいスレッドで各パケットを処理すると、パケットが順不同で処理される可能性があります。それらをキューに入れ、その時点でバックグラウンドスレッドで処理することができます。あるいは、何もする必要がないかもしれません。
0
ThreadPoolでタスク全体をフォローすることができます。
ethernet_adapter.PacketArrived += (s, e) =>
{
ThreadPool.QueueUserWorkItem("long processing item");
};
またはすべてのスレッドに対してタスク(.net 4.0)を作成できます。
0
は恐らくあなたのethernet_adapter
クラスの方法があります。しかし!毎回別のスレッドでethernet_adapter
を呼び出すと、それ以降の呼び出しをブロックすることはできません.2つの並行処理が同時に行われます。
例として、Socket
の実装を見てみましょう。非同期メソッドはIOCPスレッドに完了コールバックを呼び出すようにします(IO ThreadPool
に何かがある間は毎回異なります)。
関連する問題
- 1. とNullReferenceExceptionやイベント
- 2. C#のイベントやLambda?
- 3. 渡す値やイベント
- 4. リーフレットのContextMenu作業やイベント
- 5. JavaScriptのClickイベントでイベントのバブリングやバブリングが発生しない
- 6. AssertJとMockito:やや複雑なJTableイベントをチェックしますか?
- 7. セル編集中jqxgrid handlekeyboardnavigationイベントやタブ
- 8. GWTクラウドでClickイベントや他のイベントを処理する方法は?
- 9. 埋め込みのつぶやき完了イベント?
- 10. php/mysql:銀行休暇やクリスマス、イースターなどのイベントのデータベース
- 11. アプリエンジンにはフックやイベントのデプロイメントがありますか?
- 12. Slack APIでイベントとやりとりする方法は?
- 13. iphone bluetoothデバイスからイベントやデータを取得しています
- 14. ASP.NET Textbox TextChangedとButton OnClickイベントのやりとりですか?
- 15. Python Matplotlibイベント処理:パン/ズームとのやり取り
- 16. Visual Studioのテストプロジェクトは、イベントやデリゲートに対処できますか?
- 17. 検索ボットやスパムボットは、JavaScriptイベントをエミュレート/トリガーできますか?
- 18. Javaの元に戻すアクションとやり直しのイベント
- 19. WinForm - 2つのDataGridView間でイベントをやりとりします
- 20. Ionic&Cordova、完了したボタンやボタンのイベントを聞くには
- 21. PSのKeyDownイベントへのヘルプや関数とハッシュテーブル
- 22. 1つの汎用イベント名または複数のわかりやすいイベント名
- 23. 電話やその他のイベントが音楽プレーヤーのiPhoneをシャットダウンしたときのイベントをキャッチ
- 24. クエストシステムでイベントやタスクを構造化/設計してコードを管理しやすくするには?
- 25. イベント後にjQuery関数をやや上書きする方法はありますか?
- 26. 毎月同じ日に会議やイベントを繰り返す方法
- 27. iOSビデオプレーヤーで公開されるイベントや方法は何ですか?
- 28. Xamarin Formsはアニメーションやイベントが終了するのを待ちます
- 29. メインスレッドはイベントやコールバックが発生するのを待機しません
- 30. jQueryの複数のAJAX同期要求&動的に追加、HTMLやイベント
「ethernet_adapter」はどのような種類のオブジェクトですか? –
@ JimMischelサードパーティ製ライブラリタイプの 'ICaptureDevice'です。私は答えがあると思う。 – ren