タイトル | : Mutex使用時にExcelのプロセスが終了しない |
記事No | : 6489 |
投稿日 | : 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
|