.NET C#,VB.NET,VC.NET

■二重起動防止

Mutexを使って二重起動を防止します。
具体的には
FormLoad時などにMutexを作成してみて
既に作成されていれば二重起動されたと見なします。

C#
private System.Threading.Mutex mutex;

private void Form1_Load(object sender, System.EventArgs e)
{
    // Mutexを作成(Mutex名はユニークな名前を付けてください)
    mutex = new System.Threading.Mutex( false, "unko" );
    if ( !mutex.WaitOne( 0, false ) )
    {
        MessageBox.Show( "二重起動です!", "INFO" );
        this.Close();
    }
}

private void Form1_Closed(object sender, System.EventArgs e)
{
    // 作成したMutexをクローズ
    mutex.Close();
}
VB.NET
Private mutex As System.Threading.Mutex

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'Mutexを作成(Mutex名はユニークな名前を付けてください)
    mutex = New System.Threading.Mutex(False, "unko")
    If (mutex.WaitOne(0, False) = False) Then
        MessageBox.Show("二重起動です!", "INFO")
        Me.Close()
    End If
End Sub

Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
    '作成したMutexをクローズ
    mutex.Close()
End Sub
VC.NET
private: System::Threading::Mutex* mutex;

private: System::Void Form1_Load(System::Object *  sender, System::EventArgs *  e)
{
    // Mutexを作成(Mutex名はユニークな名前を付けてください)
    mutex = new System::Threading::Mutex( false, "unko" );
    if ( !mutex->WaitOne( 0, false ) )
    {
        MessageBox::Show( "二重起動です!", "INFO" );
        this->Close();
    }
}

private: System::Void Form1_Closed(System::Object *  sender, System::EventArgs *  e)
{
    // 作成したMutexをクローズ
    mutex->Close();
}

トップ  > .NET C#,VB.NET,VC.NET
Copyright (C) 2005.09 〜 By Shougo Suzaki

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送