DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

VB6のApp.PrevInstanceに代わるものは?

この答えは、MSDNの「Visual Basic .NET における PrevInstance プロパティの変更点」にあります。代わりは、次のようなメソッドになります。なお、MSDNではUboundを使用していますが、Lengthを使うように変更してあります。

VB.NET
コードを隠すコードを選択
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
C#
コードを隠すコードを選択
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 を返します。」

二重起動を禁止する方法については、「二重起動を禁止する」をご覧ください。

  • 履歴:
  • 2009/6/9 Uboundの代わりにLengthを使うように修正。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。