我通常會允許使用IDE中的命令行參數設置傳遞給我的服務的命令行開關。當這個開關打開時,我可以運行我的服務作爲一個普通的應用程序。這裏唯一的問題是,您需要記住,服務通常在具有受限權限的帳戶下運行,因此,在訪問受保護的資源時,作爲用戶上下文中的應用程序進行調試的行爲可能會有所不同。以下是示例代碼:
static void Main()
{
if (IsDebugMode())
{
MyService svc = new MyService();
svc.DebugStart();
bool bContinue = true;
MSG msg = new MSG();
// process the message loop so that any Windows messages related to
// COM or hidden windows get processed.
while (bContinue && GetMessage(out msg, IntPtr.Zero, 0, 0) > 0)
{
if (msg.message != WM_QUIT)
DispatchMessage(ref msg);
else
bContinue = false;
}
}
else
{
ServiceBase.Run(new MyService());
}
}
public void DebugStart()
{
this.OnStart(null);
}
static bool IsDebugMode()
{
return (System.Environment.CommandLine.IndexOf("debug") > -1);
}