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

眺める: 19792|答える: 0

[出典] StringDictionaryにおけるSyncRootの使用

[リンクをコピー]
掲載地 2016/11/23 14:26:38 | | | |

C#オブジェクト指向プログラミングは、多くのユーザーフレンドリーな演算クラスを提供します。このStringDictionaryは文字列をキーや値として保存することに特化したクラスの集合です。このクラスの意味は、C#は値型の文字列が非常に広く使われていることを知っており、他の値型も対応する文字列型に変換できることを知っています。これがこのコレクションの意味ですが、他のコレクションオブジェクトを使って置き換えることも可能です。ただし、一点に注意してください。 もしそれが文字列記憶であれば、メモリ損失を減らし、プログラムの実行時間を短縮できます


SyncRootはStringDictionaryへのアクセスを同期するために使用できます

率直に言えば、それはロックの概念なので、それをテストするプログラムを書きましょう。

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



StringDictionary辞書にデータを追加するために同時に2つのスレッドがあります。

最初のスレッドと2番目のスレッド間の実行時間差は1秒で、時間差を広げて実行が速すぎるのを防ぐためです。

スレッドは2つのメソッドに移行しており、2つ目のデータを追加する際には最初のデータが追加されるのを待ってから2つ目のデータを追加しており、追加時間が非常に速いのがわかります。

以下は、わかりやすくするために別の書き方で説明します。





3スレッドが開かれ、データが追加され、ほぼ同時に実行されますが、データ追加時にはそれぞれ10秒間隔で行われます。

まとめると、マルチスレッドアクセスの場合、SyncRootを使ってスレッドのセキュリティを確保できます




先の:WPFトリガーを使ってボタンを切り替える方法
次に:c# OCRを使って中国語の画像を認識する
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com