![](/img/trans.png)
[英]How to get the http status code in custom HandleErrorAttribute
[英]Get custom status of process
我想在一台機器上允許我的應用程序的多個進程。 可以在每個進程中加載項目(來自本地數據庫),我想確保項目只能在我的應用程序的一個進程中打開。
因此,在打開項目之前,我想檢查我要打開的項目是否已在另一個進程中打開。
我知道這不是最好的編程實踐,但我只是一個臨時解決方案,直到我們在數據級別上實現更復雜的鎖定機制。
我可以檢測到另一個正在運行的進程,但我可以以某種方式訪問或轉換為更適合獲取我想要的信息的東西嗎?
有點喜歡:
Process[] allProcesses = Process.GetProcessesByName("MyApp");
foreach (Process process in allProcesses)
{
var projects = process.OpenedProjects;
已經遇到過.net遠程處理,WCF,IPC但發現對於這個相當“簡單”的任務非常重量級。
如果這是一個臨時解決方案,只需選擇簡單的方法:
當進程加載項目時,只需使用項目名稱或ID在app目錄中寫入文件。 如果文件已存在,則表示該項目已在另一個進程中加載。 如果您想知道哪個進程已打開項目,您還可以將進程ID編寫為文件內容。
當然,您需要在流程完成后刪除該文件。 確保處理所有異常,以便在不刪除此文件的情況下無法完成該過程。 即攔截AppDomain.UnhandledException。
如果這是您所說的臨時解決方案,您可以為每個項目提供一個標識符(例如文件名)並將其顯示在主窗口的標題中,例如
C:\\ Project1.proj C:\\ Project2.proj C:\\ Project3.proj
然后使用process.MainWindowTitle.Split(' ').Contains
. process.MainWindowTitle.Split(' ').Contains
檢查項目是否打開。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.