この答えは、MSDNの「Visual Basic .NET における PrevInstance プロパティの変更点」にあります。代わりは、次のようなメソッドになります。なお、MSDNではUboundを使用していますが、Lengthを使うように変更してあります。
Public Function PrevInstance() As Boolean If Diagnostics.Process.GetProcessesByName( _ Diagnostics.Process.GetCurrentProcess.ProcessName).Length > 1 Then Return True Else Return False End If End Function
public bool PrevInstance() { if (System.Diagnostics.Process.GetProcessesByName( System.Diagnostics.Process.GetCurrentProcess().ProcessName).Length > 1) return true; else return false; }
MSDNによると、このメソッドはVB6のPrevInstanceと以下のような違いがあるということです。
「この動作は Visual Basic 6.0 の動作とは若干異なります。Visual Basic 6.0 では、PrevInstance は完全パスとファイル名が完全に一致する場合にだけ true を返しますが、この例の Visual Basic .NET の関数では、異なるパスから起動された 2 つのインスタンスがある場合に true を返します。さらに PrevInstance は、アプリケーションの 1 つ目のインスタンスの場合は決して true を返しません。Visual Basic .NET では、2 つ目のインスタンスが読み込まれた後は、1 つ目のインスタンスについても true を返します。」
二重起動を禁止する方法については、「二重起動を禁止する」をご覧ください。
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。