你好!我目前正在编写一个简单的C#.NET服务,当PC失去30秒的无线连接时,它会停止给定的进程。无线连接返回后,重新启动该过程。服务中的所有逻辑看起来都很合理,当我在Visual Studio开发环境中运行服务时,它运行得很完美,目标应用程序运行在运行服务的PC上的同一目录中。但是,当我在远程PC上运行该服务时,重新连接到网络时,应用程序永远不会重新启动。 try-catch中也没有遇到错误。我已经阅读了很多关于工作目录是一个问题的内容,但这并不能解释为什么它在我的机器上工作而不是另一个。这是我目前使用的代码:
try
{
ProcessStartInfo processInfo = new ProcessStartInfo();
processInfo.FileName = @"C:\Path\Application\Application.exe";
processInfo.WorkingDirectory = Path.GetDirectoryName(@"C:\Path\Application\Application.exe");
processInfo.ErrorDialog = true;
processInfo.UseShellExecute = false;
processInfo.RedirectStandardOutput = true;
processInfo.RedirectStandardError = true;
Process proc = Process.Start(processInfo);
}
catch (Exception ex)
{
LogTrace.TraceLine("Error re-starting process " + startInfo.FileName + ": " + ex, false);
}
其他一些说明:
- 我尝试过使用不同权限级别的不同用户运行服务。以管理员身份运行服务没有任何区别。
-UAC完全关闭。
- 我尝试使用FireDaemon在目标PC上的会话0中以交互模式运行服务。
有人对任何事情都有任何想法吗?
答案 0 :(得分:0)
服务入门片段以帮助您入门
{
using System.ServiceProcess;
using...
namespace myServicenamespace
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main(string[] args)
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] {
new myService()
};
ServiceBase.Run(ServicesToRun);
}
}
}
myService在其他地方定义为您要运行的代码,包括
{
protected override void OnStart() {...}
protected override void OnStop {...}
}
服务的部署也有所不同,如上所述,请查看ServiceProcess上的其他文档以了解更多信息。