tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Mutex使用時にExcelのプロセスが終了しない
投稿日: 2007/11/05(Mon) 11:10
投稿者むなり
Mutex コンストラクタ を使用してアプリケーションの2重起動を防止する
http://hanatyan.sakura.ne.jp/dotnet/App04.htm

上記を使用し、二重起動を防止しているアプリにて、
Excel.Applicationを扱うと、アプリを終了してもExcelのプロセスが終了しません。
下記がそのプログラム内容になります。

この2重起動防止の部分をコメントアウトすると、
アプリ終了時に、Excelのプロセスが終了します。

どの部分に問題あるかご助言頂けないでしょうか。

---プログラム、ここから先---

Private Sub Form1_Load(ByVal sender As System.Object, _
                       ByVal e As System.EventArgs) Handles MyBase.Load
    'Mutex コンストラクタ
    'ミューテックスの名前を表す文字列を使用して、
    'Mutex クラスの新しいインスタンスを初期化します。
    Dim mt As New System.Threading.Mutex( _
                            False, Process.GetCurrentProcess.ProcessName)
    'WaitHandle.WaitOne メソッド
    '現在の WaitHandle がシグナルを受信するまで現在のスレッドをブロックします
    If mt.WaitOne(0, False) = False Then
        MessageBox.Show("同じアプリがすでに起動しています")
        mt.Close()
        Me.Close()
    End If
End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, _
                              ByVal e As System.EventArgs) Handles Button1.Click
        Dim xlApp As Microsoft.Office.Interop.Excel.Application
        Dim xlWb As Microsoft.Office.Interop.Excel.Workbook
        Dim xlWs As Microsoft.Office.Interop.Excel.Worksheet

        xlApp = New Microsoft.Office.Interop.Excel.Application
        xlWb = xlApp.Workbooks.Add
        xlWs = xlWb.Worksheets("Sheet1")

        xlWs = Nothing
        xlWb.Close(False)
        xlWb = Nothing
        xlApp.Quit()
        xlApp = Nothing

    End Sub

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。