FC2ブログ

コマンドクラスのリメイク(弐)

・スレッドセーフにアクセスするためのクラス
 非同期型コマンドを実装する以上、複数スレッドからのデータアクセスを考慮する必要がある。C#には、初期から排他制御するためのlockがあるので、それを使って実装する。
namespace Tawamuredays.Data {

/// <summary>
/// スレッドセーフなデータを保持する為のデータクラス
/// </summary>
public sealed class ConcurrentData<TData> {

#region コンストラクタ

/// <summary>
/// コンストラクタ
/// </summary>
/// <param name="data">対象データ</param>
public ConcurrentData(TData data) {
this.value_ = data;
return;
}

#endregion

#region プロパティ

/// <summary>対象データ</summary>
private TData value_;

/// <summary>
/// 対象データを取得|設定します。
/// </summary>
public TData Value {
get {
lock (this.lockObj_) {
return this.value_;
}
}
set {
lock (this.lockObj_) {
this.value_ = value;
}
}
}

#endregion

#region private メンバー

/// <summary>ロック用オブジェクト</summary>
private readonly object lockObj_ = new object();

#endregion
}
}
スレッドセーフなコレクションなら、C#に標準装備されているので、それを使うのもありかな。
スポンサーサイト
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4 | コメント: 0 | トラックバック: 0


この記事へのコメント

コメントの投稿

非公開コメント


サイドバー背後固定表示サンプル

当ブログに書かれたソースコードは流用自由です。

バグ、スペルミス等はありうる事です。

ご利用の際は自己責任でお願いしますm(_ _)m