§1 .NET Frameworkのバージョンとサポートされるメソッド

WaitOne, WaitAny, WaitAllメソッドのオーバーロードは、.NET Frameworkのバージョンによってサポート状況が異なる。

各メソッドのオーバーロードのうち、引数exitContextを省略できるバージョンは

  • .NET Framework 4
  • .NET Framework 3.5 SP1
  • .NET Framework 3.0 SP2
  • .NET Framework 2.0 SP2

以降でサポートされる。 このため、引数exitContextを省略したバージョンを用いたコードを上記より古い.NET Frameworkで実行した場合、MissingMethodExceptionがスローされる。

各メソッドのオーバーロードとサポートされる.NET Frameworkのバージョンの対応を表にまとめると以下のようになる。

WaitHandle.WaitOne
オーバーロード サポートされる.NET Frameworkのバージョン 等価な呼び出し
WaitOne() 4, 3.5, 3.0, 2.0, 1.1, 1.0 WaitOne(-1, false)
WaitOne(Timeout.Inifinite, false)
WaitOne(int) 4, 3.5 SP1, 3.0 SP2, 2.0 SP2 WaitOne(millisecondsTimeout, false)
WaitOne(TimeSpan) 4, 3.5 SP1, 3.0 SP2, 2.0 SP2 WaitOne(timeout, false)
WaitOne(int, bool) 4, 3.5, 3.0, 2.0, 1.1, 1.0 -
WaitOne(TimeSpan, bool) 4, 3.5, 3.0, 2.0, 1.1, 1.0 -

WaitHandleクラスから派生する以下のクラスでも同様。

WaitHandle.WaitAny
オーバーロード サポートされる.NET Frameworkのバージョン 等価な呼び出し
WaitAny(WaitHandle[]) 4, 3.5, 3.0, 2.0, 1.1, 1.0 WaitAny(waitHandles, -1, false)
WaitAny(waitHandles, Timeout.Infinite, false)
WaitAny(WaitHandle[], int) 4, 3.5 SP1, 3.0 SP2, 2.0 SP2 WaitAny(waitHandles, millisecondsTimeout, false)
WaitAny(WaitHandle[], TimeSpan) 4, 3.5 SP1, 3.0 SP2, 2.0 SP2 WaitAny(waitHandles, timeout, false)
WaitAny(WaitHandle[], int, bool) 4, 3.5, 3.0, 2.0, 1.1, 1.0 -
WaitAny(WaitHandle[], TimeSpan, bool) 4, 3.5, 3.0, 2.0, 1.1, 1.0 -
WaitHandle.WaitAll
オーバーロード サポートされる.NET Frameworkのバージョン 等価な呼び出し
WaitAll(WaitHandle[]) 4, 3.5, 3.0, 2.0, 1.1, 1.0 WaitAll(waitHandles, -1, false)
WaitAll(waitHandles, Timeout.Infinite, false)
WaitAll(WaitHandle[], int) 4, 3.5 SP1, 3.0 SP2, 2.0 SP2 WaitAll(waitHandles, millisecondsTimeout, false)
WaitAll(WaitHandle[], TimeSpan) 4, 3.5 SP1, 3.0 SP2, 2.0 SP2 WaitAll(waitHandles, timeout, false)
WaitAll(WaitHandle[], int, bool) 4, 3.5, 3.0, 2.0, 1.1, 1.0 -
WaitAll(WaitHandle[], TimeSpan, bool) 4, 3.5, 3.0, 2.0, 1.1, 1.0 -

なお、SignalAndWaitメソッドは引数exitContextを省略できるバージョンが用意されていない。

WaitHandle.SignalAndWait
オーバーロード サポートされる.NET Frameworkのバージョン 等価な呼び出し
SignalAndWait(WaitHandle, WaitHandle) 4, 3.5, 3.0, 2.0 SignalAndWait(toSignal, toWait, -1, false)
SignalAndWait(toSignal, toWait, Timeout.Infinite, false)
SignalAndWait(WaitHandle, WaitHandle, int, bool) 4, 3.5, 3.0, 2.0 -
SignalAndWait(WaitHandle, WaitHandle, TimeSpan, bool) 4, 3.5, 3.0, 2.0 -