私のカスタムクラスのインスタンスを作成したいと思います。たとえば、2つのスレッドT1
とT2
があります。 T1
からインスタンスを作成した場合、そのインスタンスへのアクセスはT2
から例外をスローする必要があります。 WinFormsのように、私はUIスレッドではないスレッドからアクセスコントロールを試みます。呼び出し元のスレッドがオブジェクトを作成したスレッドでない場合は例外をスローする
これを行うには? current thread
への参照を保存する必要がありますか、現在のスレッドのunique ID
を保持する必要がありますか? (そのIDが存在する場合)。どのメカニズムを使用するのですか?
基本的には、与えられたシードの乱数を生成するシングルトンになります。自分のシナリオを再現するために同じシードで再度アプリケーションを実行する必要があるため、このシングルトンへのアクセスを他のスレッドからブロックしたいのです。このクラスを他のスレッドから使用するようにすれば、スレッドは予期しない順序でアクションを開始/停止/実行するので、再生はできません。
なぜですか?スレッドセーフであるようにコードを修正してみませんか?乱数を返すメソッドの単純な 'lock(){..}'は十分なはずです –
http://stackoverflow.com/a/7610982/574632 – Steve
アクセスしたいだけの場合は、シングルトンは必要ありませんメインフォームのオブジェクトまたは単一のオブジェクト。 –