我正在研究与2010年提出的问题类似的内容
How to call Windows application using Windows service in C#?
这个答案可能是我的问题的解决方案
https://stackoverflow.com/a/2309089/1270384
虽然我不知道该怎么做。
想知道是否有人可以举例说明所提到的内容或类似内容,即提到的流程类或仅仅是如何处理所给出的指示的简短示例。
更新
我有一个Web应用程序,它检查我的数据库是否有对特定表的更改。我想在我试图创建的这个Windows服务中调用我的应用程序,我想安排每隔20秒运行一次。
我是Windows服务的新手,所以没有得到解释的内容。
非常感谢任何澄清。
答案 0 :(得分:1)
在服务控制面板的“登录”选项卡上,选中“允许服务与桌面交互”复选框。然后你可以做这样的事情。
public class WinService : ServiceBase
{
Process p = new Process();
public WinService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
RunApp();
}
private void RunApp()
{
p.StartInfo.FileName = @"<path to your app>";
p.StartInfo.Arguments = "<your params>";
p.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
p.Start();
}
protected override void OnStop()
{
p.Kill();
}
}
编辑:参数传递:
列出startInfo.Arguments中的所有参数,用空格分隔它们。 数字参数按原样列出,字符串参数列在引号中。
示例:强>
如果您的应用程序的命令行是:
YourApp.exe param1 "param two" param3
然后你的startInfo.Arguments应该设置为:
startInfo.Arguments = "param1 \"param two\" param3";
答案 1 :(得分:0)
您始终可以将Web应用程序中的逻辑封装在一个单独的类中,您可以在服务中调用该类。
否则,您可以使用WebClient
课程来呼叫您的网站。