タイトル : 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 |