Sco*_*ain 15
作为经验法则,服务永远不应该有任何类型的UI.这是因为服务通常以非常高的权限运行,如果您对输入不够小心,可能会发生不好的事情.(我认为最新版本的Windows根本不允许您从服务创建UI,但我不是100%肯定.)
如果您需要与服务进行通信,则应使用某种形式的IPC(WCF,管道,套接字......).如果你想要一个也可以作为服务的简单控制台程序,我知道一个设置它的技巧:
class MyExampleApp : ServiceBase
{
public static void Main(string[] args)
{
if (args.Length == 1 && args[0].Equals("--console"))
{
new MyExampleApp().ConsoleRun();
}
else
{
ServiceBase.Run(new MyExampleApp());
}
}
private void ConsoleRun()
{
Console.WriteLine(string.Format("{0}::starting...", GetType().FullName));
OnStart(null);
Console.WriteLine(string.Format("{0}::ready (ENTER to exit)", GetType().FullName));
Console.ReadLine();
OnStop();
Console.WriteLine(string.Format("{0}::stopped", GetType().FullName));
}
//snip
}
Run Code Online (Sandbox Code Playgroud)
如果您刚启动该程序,它将作为服务启动(如果您从控制台运行它会对您大喊大叫),但如果您--console
在启动时添加该参数,程序将启动并等待您按Enter键关.
我们实际上解决了它并写了一篇关于它的小帖子:http :
//remy.supertext.ch/2011/11/a-wpf-project-running-from-the-cmd-prompt-or-as-a-service -and-has-a-gui/
也许它可以帮助某人。
归档时间: |
|
查看次数: |
18992 次 |
最近记录: |