我創建的應用程序包含通知圖標,並且它在後臺保持活動狀態(以及某種方式)。問題是,當用戶點擊我的應用程序的圖標時,應用程序將再次啓動,所以我有兩個通知圖標和兩個活動在後臺和兩個一切。如果用戶再次點擊該圖標,則會出現三種情況,......因此,我應該停止此操作。我有一種設置標誌並將其值設置爲註冊表的想法,當我的應用程序想要啓動時,在表單加載事件中,通過讀取值終止應用程序。但我想要一個更專業的方式來處理它。例如根本不開始。如何防止我的應用程序一次又一次啓動
回答
這是this答案這是一個this重複。您檢查您的應用程序的條目構造函數是否已在運行該應用程序。
static void Main()
{
Process currentProcess = Process.GetCurrentProcess();
var runningProcess = (from process in Process.GetProcesses()
where
process.Id != currentProcess.Id &&
process.ProcessName.Equals(
currentProcess.ProcessName,
StringComparison.Ordinal)
select process).FirstOrDefault();
if (runningProcess != null)
{
ShowWindow(runningProcess.MainWindowHandle, SW_SHOWMAXIMIZED);
return;
}
}
創建某種形式的應用程序創建的全局互斥/事件句柄,然後在打開的例程中檢查它是否存在,如果存在,則退出啓動路由。
我在這個答案中給出了一些基本的代碼(針對不同的問題),但它展示了你正在嘗試做的事情。
請你在你說的有點業餘的方式說話?!也許一個代碼示例什麼?因爲這是有點我的第一個真正的應用程序!感謝 – roostaamir 2013-03-03 14:13:27
只是要清楚,你的時候啓動一個exe的新實例,它將在一個不同的STA中打開。他們不共享變量,所以你不能使用互斥或事件,因爲它們不共享。我錯了嗎? – 2013-03-03 14:29:48
GLOBAL \ Mutex在整個Windows計算機上都可見。如果您希望能夠連接到它們,您將需要授予權限,但如果它們存在並且您沒有權限,則會提供例外。 – 2013-03-03 14:37:40
- 1. 如何一次又一次啓動和停止後臺線程?
- 2. 如何防止應用程序崩潰,而不是一次又一次的回覆消息?
- 3. 如何在第一次啓動應用程序時使Activity只啓動一次?
- 4. 在應用程序購買被拒絕一次又一次
- 5. 我想選擇另一個第一次啓動應用程序
- 6. 如何停止頁面加載一次又一次?
- 7. 如何防止需要每次登錄的iPhone Web應用程序啓動
- 8. 元素一次又一次
- 9. System.Runtime.InteropServices.COMException一次又一次
- 10. 守則一次又一次
- 11. 每次啓動應用程序只需撥打一次電話
- 12. Netbeans CUnit每次啓動應用程序時運行一次
- 13. 如何避免讓用戶一次又一次地登錄(連接)我的Facebook應用程序?
- 14. 僅在應用程序第一次啓動時啓動活動
- 15. 如何停止ignore_user_abort一次啓動?
- 16. 如何停止一次intent.ACTION_CALL啓動?
- 17. 如何防止我的活動再次啓動?
- 18. 我想讓我的程序一次又一次運行而不會停下來
- 19. 第一次啓動時如何防止通知許可?
- 20. 如何使服務啓動一次android應用程序打開?
- 21. 如何在應用程序啓動時運行一次?
- 22. 如何在第一次應用程序啓動時顯示pushviewcontroller?
- 23. 日期一次又一次顯示,我如何使羣組由
- 24. 一次又一次地調用功能
- 25. 不用想一次又一次
- 26. 方法一次又一次調用
- 27. 如何一次又一次地連續重複文本動畫
- 28. 如何防止從我的應用程序啓動其他應用程序
- 29. 如何停止在JavaScript中一次又一次地調用相同的函數?
- 30. XCode 5:一次又一次崩潰,同時打開應用程序
你看,我說的是點擊應用程序本身(不是它的通知圖標)帶來這種情況。我的意思是當點擊我的app.exe文件時,會出現此問題。 – roostaamir 2013-03-03 14:17:59
我看到他說什麼時候點擊圖標,他正在談論實際的桌面圖標。不知道我的代碼是否在任何地方掛起。如果我找不到它,我會刪除它。 – 2013-03-03 14:18:44