您可以隨時創建服務/控制檯應用混合,並使用控制檯應用進行測試。
你需要做的就是這樣的事情 - 在你program.cs
,改變Main
方法設置爲運行服務,或隨意地運行作爲控制檯應用程序:
static class Program
{
static void Main(params string[] args)
{
string firstArgument = string.Empty;
if (args.Length > 0)
{
firstArgument = args[0].ToLowerInvariant();
}
if (string.Compare(firstArgument, "-console", true) == 0)
{
new YourServiceClass().RunConsole(args);
}
else
{
ServiceBase[] ServicesToRun = new ServiceBase[] { new YourServiceClass() };
ServiceBase.Run(ServicesToRun);
}
}
,然後在你的服務類,如果你想運行的應用程序來測試它的函數的
public void RunConsole(string[] args)
{
OnStart(args);
Console.WriteLine("Service running ... press <ENTER> to stop");
//Console.ReadLine();
while (true)
{ }
OnStop();
}
現在:從ServiceBase
繼承和擁有OnStart
和OnStop
,添加像這樣的RunConsole
方法只要用-console
命令行參數啓動EXE,並在RunConsole
方法中放置一個斷點即可。
+1這應該是公認的答案,因爲這也抓住問題,然後纔能有機會附加到過程。 – Joe 2011-10-26 23:13:55
順便說一句OnStop()無法訪問。 – 2011-11-16 09:56:23
爲什麼Console.ReadLine()註釋掉了?這是不正確的?擺脫無限循環...... – Phil 2012-02-07 20:21:22