この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 41603|答える: 2

[出典] .NET/C#はBlockingCollectionに基づくシンプルなログを実装しています

[リンクをコピー]
2021年1月5日 14:58:50に投稿 | | | |
以前、別のフレームワークからコピーした簡単なログヘルプクラスを書きましたが、そのテストは使いやすくありません。以下のように:

C#はログを書く最も簡単な方法です
https://www.itsvse.com/thread-5111-1-1.html
本記事では、BlockingCollectionに基づくシンプルなログクラスを再実装します。

.NET/C# スレッドセーフティコレクション(照合)
https://www.itsvse.com/thread-3769-1-1.html
BlockingCollection<T>は、以下の機能を提供するスレッド安全なコレクションクラスです:

メイカー・ユーザーモデルを実装しましょう。
マルチスレッドを通じてアイテムを追加・取得できます。
オプションで最大収容能力を設定。
コレクションが空または満杯の場合、挿入および削除操作によってブロックされます。
挿入および削除の試みはブロックされず、指定された時間の間も発生しません。
カプセル化はIProducerConsumerCollection<T>の任意のコレクションタイプを実装します
キャンセルアクションを実行するにはキャンセルタグを使ってください。
foreach(Visual BasicではFor Each)を使う2種類の列挙がサポートされています:読み取り専用列挙です。 列挙は、項目が列挙されたときにその項目を削除するものです。


マイクロソフトは以下のことを発表します:ハイパーリンクのログインが見えます。

BlockingCollectionはスレッド安全なブロッキングキューであり、この機能を使ってプロセス内でプロデューサー-コンシューマーモード(メッセージ転送やログ記録など)を実装しています。

Addメソッドを呼び出してキューに情報を追加し、キューにメッセージがなければ、IsCompletedは常にwhileループをブロックし、デッドループを発生させません。 新しいメッセージが出ると、iCompletedの「while」がトリガーされ、ブール型を返すことで実行が続き、つまりスレッドからデータを取得します。


以前は、ManualResetEventのWaitOneメソッドを呼び出し、SetメソッドとSetメソッドを呼び出して信号を渡すことでスレッドをブロックしました。以下の通りです。

c#はユニバーサルQueueHelperキューをカプセル化しています
https://www.itsvse.com/thread-5029-1-1.html


このテストは10,000件のログを書き込み、10ミリ秒未満で完了します、下図に示されているように:



コードは以下の通りです:

ソースコードダウンロード:

観光客の皆さん、この投稿の隠された内容を見たい方は、どうぞ答える





先の:warning: LF will be replaced by CRLF in xxxx.
次に:Entity Framework クエリ最適化 WITH(NOLOCK)
 地主| 2021年1月23日 11:53:55に投稿 |
.NET/C# は BlockingCollection バックグラウンドタスクキューに基づいています
https://www.itsvse.com/thread-9528-1-1.html

2023年4月24日 22:36:31に投稿 |
素晴らしい、とても良い学習教材です
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com