none
.Net Framework2.0でのMutex.WaitOne(int)メソッドが利用について RRS feed

  • 質問

  • .Net Framework2.0で動作するWindowsFormプログラムで、Mutex.WaitOne(int)メソッドを利用したプログラムを動作させたのですが、特定の環境だけメソッドが見つからないという例外が発生しました。いろいろと疑問がわいたので質問させてください。
    また、例外が発生した環境、問題なく動作した環境も以下に挙げさせていただきます。


    ■質問

    同じ.Net Framework2.0でも、バージョンUP(リビジョン番号の違い)でFramework側のクラスにpublicメソッドが追加されることはよくあることなのでしょうか?

    また、この問題をコンパイル時に検出することはできないのでしょうか?
    (ドキュメント上にはframework2.0にはMutex.WaitOne(int)は存在しないのようです。ドキュメントを確認するしかないのでしょうか
    http://msdn.microsoft.com/ja-jp/library/system.threading.waithandle.waitone(v=vs.80).aspx)

    ■プログラムのコンパイル

    プログラムのコンパイルは、下記例外が発生しない環境にてVisual Studio 2005で行いました。
    コンパイル時に参照しているFrameworkにて提供されているのアセンブリのバージョンは全て2.0.0.0です。
    コンパイルエラー等は特に発生せず、上記Mutex.WaitOneはインテリセンスでも表示されます。


    ■例外が発生しなかった環境(PGをコンパイルした環境)

    OS:Windows XP SP3
    .Net Framework: 1.1, 2.0SP2, 3.0SP2, 3.5SP1, 4.0
    mscorlib.dllのバージョン: 2.0.50727.3643

    ■例外が発生した環境

    OS:Windows XP SP3
    .Net Framework: 2.0
    mscorlib.dllのバージョン: 2.0.50727.42


    2013年2月22日 4:45

回答

  • まずこのフォーラムは.NET Micro Framework用で、.NET Frameworkとは異なります。

    WaitHandle.WaitOne メソッドはドキュメントに記されているように、.NET Framework 2.0 SP1で追加されたものです。ページ下部「バージョン情報」を確認してください。(.NET 4.5向けページには 2.0 SP2と記されていますが、多分間違いです。)

    • 回答としてマーク nogu611 2013年2月22日 6:49
    2013年2月22日 6:18

すべての返信

  • まずこのフォーラムは.NET Micro Framework用で、.NET Frameworkとは異なります。

    WaitHandle.WaitOne メソッドはドキュメントに記されているように、.NET Framework 2.0 SP1で追加されたものです。ページ下部「バージョン情報」を確認してください。(.NET 4.5向けページには 2.0 SP2と記されていますが、多分間違いです。)

    • 回答としてマーク nogu611 2013年2月22日 6:49
    2013年2月22日 6:18
  • 佐祐理様

    回答ありがとうございます。フォーラムの「Micro」を見落としておりました・・・。

    ご提示してくださったドキュメントにも確かにSP1と書いてあるのですね。それちらも見落としておりました。

    やはりサービスパック等で、メソッドの追加はありえるということですね。

    Framework2.0(SPなし)で動作させるプログラムについては、コンパイル時には、やはり、実行環境と同じFrameworkをインストールした環境でコンパイルするのが正しい対応のようですね。

    解決しました。ありがとうございます。

    2013年2月22日 6:48