[英]vb or c#: start second project in process and kill it when first process exits - how find second exe?
[英]How to do: The first instance of an app will execute a process, second instance will kill the process later
我想創建一個行為如下的控制台應用程序:
有一個簡單的方法嗎?
編輯:第二個實例也終止第一個實例和它自己。
編輯2:
更多細節場景如下:
假設沒有運行我的應用程序的實例。 如果我執行我的應用程序,新實例將運行。 該應用程序將創建一個執行Adobe Acrobat Reader X的過程(例如)。
之后,我再次執行我的應用程序只是為了殺死正在運行的Adobe Acrobat Reader X,當然還有它的主機(我的應用程序的第一個實例)。
您需要實現互斥鎖才能執行此操作。
private static Mutex mutex = null;
private void CheckIfRunning() {
string strId = "291B62B2-812A-4a13-A657-BA672DD0C93B";
bool bCreated;
try
{
mutex = new Mutex(false, strId, out bCreated);
}
catch (Exception)
{
bCreated = false;
//Todo: Kill your process
}
if (!bCreated)
{
MessageBox.Show(Resources.lbliLinkAlreadyOpen, Resources.lblError, MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
您可以使用已知名稱創建進程。 然后,當應用程序啟動時,您可以獲得包含正在運行的所有進程的列表。 如果進程不在那里你可以啟動它,如果它已經存在,你可以終止進程並退出。
更優雅的解決方案是Max建議使用Mutex在進程之間進行通信。 例如,確保不要使用相同名稱殺死另一個進程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.