派生しEventWaitHandle
てオーバーライドする新しいクラスを作成Set
しReset
て、何もしないか、例外をスローすることができます。実際には、仮想ではないnew
ため、実装を作成する必要があります。もちろん、独自の別の名前のメソッドを作成する必要があります。のように。可能ですが、それを行うことはお勧めしません。Set
Reset
MyInternalSet
MyInternalReset
代わりに、クライアントがイベントを設定またはリセットしてはならないことを文書化します。そうすると、予期しない動作が発生するためです。
をプロパティとしてWaitHandle
保持する派生クラスを作成できます。その場合、クライアントコードはそれにアクセスできなくなります。何かのようなもの:AutoResetEvent
internal
public class MyWaitHandle: WaitHandle
{
internal AutoResetEvent InternalEvent { get; private set; }
internal MyWaitHandle(AutoResetEvent event)
{
InternalEvent = event;
}
public override bool WaitOne(int32 timeout)
{
return InternalEvent.WaitOne();
}
}
保護されたDispose(Boolean)
メソッドをオーバーライドして、内部ハンドルを破棄する必要があります。また、他のWaitOne
オーバーロードも必要になります。次に、とinternal
の実装を作成するか、コードでを呼び出すことができます。Set
Reset
InternalHandle.Set
私は今でも最善の行動はクライアントにそうしないように言うことだと思います。しかし、それを防ぐ必要がある場合は、上記が機能するはずです。