如何判斷.Net應用程序是作爲桌面應用程序運行還是作爲服務運行?告訴一個.Net應用程序是否作爲服務或應用程序運行?
我們試圖用Fitnesse來測試我們的應用程序,該應用程序將應用程序加載爲服務,然後調用它。但是當模態錯誤框被推動時,它就會炸燬..我想把一個支票看看它是否在服務中運行,如果是我想拋出一個異常,所以我們的測試會失敗。
有沒有辦法做到這一點,除了傳遞一個參數到某個地方說它是由FitNesse啓動的?
如何判斷.Net應用程序是作爲桌面應用程序運行還是作爲服務運行?告訴一個.Net應用程序是否作爲服務或應用程序運行?
我們試圖用Fitnesse來測試我們的應用程序,該應用程序將應用程序加載爲服務,然後調用它。但是當模態錯誤框被推動時,它就會炸燬..我想把一個支票看看它是否在服務中運行,如果是我想拋出一個異常,所以我們的測試會失敗。
有沒有辦法做到這一點,除了傳遞一個參數到某個地方說它是由FitNesse啓動的?
如果你只是想確定是否要顯示UI控件,您可以使用:
if(Environment.UserInteractive)
{
// Show UI
}
我認爲這會工作(不便利的地方來測試我的空氣代碼):
// requires a 'using System.ServiceProcess' statement
type = Assembly.GetExecutingAssembly().EntryPoint.DeclaringType;
bool isRunningAsAService = type.IsSubclassOf(typeof(ServiceBase));
對於比檢查組件類型更簡單的解決方案+1。 – 2009-12-08 15:01:32
不知道有什麼區別,但Form.ShowDialog使用SystemInformation.UserInteractive執行相同的檢查。 – 2009-12-08 17:51:22
通過Reflector輸出判斷,兩個不同的人使用相同的底層API(GetUserObjectInformation)編寫了Environment.UserInteractive和SystemInformation.UserInteractive,但沒有查看其他代碼。 – 2009-12-08 17:54:19