在 Windows 服务中调用 Windows 应用程序
本文关键字:Windows 应用程序 调用 服务 | 更新日期: 2023-09-27 18:32:14
我正在研究类似于2010年提出的这个问题
如何在C#中使用Windows服务调用Windows应用程序?
这个答案可能是我的问题的解决方案
https://stackoverflow.com/a/2309089/1270384
虽然我不知道该怎么做。
想知道是否有人可以给我一个正在提到的内容或类似内容的示例,即提到的过程类,或者只是一个简短的示例,说明如何执行给定的说明。
更新
我有一个 Web 应用程序,可以检查我的数据库是否有对特定表的更改。我希望在我尝试创建的这个 Windows 服务中调用我的应用程序,我想安排每 20 秒运行一次。
我是Windows服务的新手,所以不太明白所解释的内容。
如有任何澄清,将不胜感激。
在服务控制面板的登录选项卡上,选中"允许服务与桌面交互"复选框。 然后你可以做这样的事情。
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";
您始终可以将 Web 应用程序中的逻辑封装在一个单独的类中,您只需在服务中调用该类即可。
否则,您可以使用 WebClient
类调用您的网站。