0

我正在研究类似于 2010 年提出的这个问题

如何在 C# 中使用 Windows 服务调用 Windows 应用程序?

这个答案可能是我的问题的解决方案

https://stackoverflow.com/a/2309089/1270384

虽然我不知道该怎么做。

想知道是否有人可以给我一个提到的例子或类似的东西,即提到的流程类,或者只是一个关于如何执行给出的说明的简短例子。

更新

我有一个 Web 应用程序,它检查我的数据库是否有对特定表的更改。我希望我的应用程序在我试图创建的这个 Windows 服务中被调用,我想安排它每 20 秒运行一次。

我是 Windows 服务的新手,所以不太明白所解释的内容。

任何澄清将不胜感激。

4

2 回答 2

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";
于 2012-04-25T04:57:48.677 回答
0

您始终可以将 Web 应用程序中的逻辑封装在一个单独的类中,您可以在服务中简单地调用该类。

WebClient否则,您可以使用该类调用您的网站。

于 2012-04-26T05:09:32.467 回答