

現在、多重起動防止のためのwindow強制終了の処理にて困っております。

プロセス名によせてPIDを取得しまくり、同プロセス名、違PIDのwindowを強制削除しまくる事で多重起動防止できると考え、調べてみました。検索すると沢山、同様の処理が出てまいりますので参考にしてみたところprocess.CloseMainWindowの箇所にて表題のエラーが発生します。

不思議と、成功する事もあるのでかえって厄介です。

以上、宜しくお願いいたします。

[code]

    System.Diagnostics.Process hThisProcess = System.Diagnostics.Process.GetCurrentProcess();
    System.Diagnostics.Process[] hProcesses = System.Diagnostics.Process.GetProcessesByName(hThisProcess.ProcessName);
    int iThisProcessId = hThisProcess.Id;
    foreach (System.Diagnostics.Process hProcess in hProcesses){
        if (hProcess.Id != iThisProcessId){
            if (!hProcess.CloseMainWindow()){
                hProcess.Kill(); 
            }
            else{
                Logger.Info("CloseMainWindow成功：" + hProcess.Id);
            }
        }
    }
    
[/code]


CC BY-SA 3.0
2015-06-09T07:29:10.193
11169
2015-06-09T09:55:33.280
2015-06-09T09:55:33.280
question
c#
"このオブジェクトに関連付けられているプロセスはありません。" エラーの回避・解決法について


なんだかすごく危険そうなことをしていますが・・・  
現コード全部捨てて Mutex による多重起動チェックにしませんか？  
他にも tips が紹介されていますし参照してください。  
<http://dobon.net/vb/dotnet/process/checkprevinstance.html>

あれ？ ASP.NET なの？だとしたらわけがわからんコードなんだけど・・・


CC BY-SA 3.0
2015-06-09T08:12:31.913
11173
2015-06-09T08:12:31.913
8589
11169
answer