gpt4 book ai didi

C# Topshelf超时异常

转载 作者:行者123 更新时间:2023-12-01 19:50:46 28 4
gpt4 key购买 nike

作为第一步,我创建了 Windows 服务项目,并对其进行了正确配置

在第二步中,我添加了 TopShelf 版本 3.1.135.0 在我的项目中如果我通过(F5 Run)运行我的服务,那么它将加载顶级控制台并且服务成功完成。

但是,当我运行它来安装并从命令提示符启动它时,出现以下超时错误。

Topshelf.Hosts.StartHost Error: 0 : The service failed to start., System.Service
Process.TimeoutException: Time out has expired and the operation has not been co
mpleted.



public class AppService
{
LoggingService loggingService = new LoggingService(typeof(AppService).Name);


public void Start()
{
loggingService.Info("SampleService is Started");
ExtractProcess.Start();
TransformProcess.Start();

}

public void Stop()
{
loggingService.Info("SampleService is Stopped");

}
}

-- 更新代码以解决此问题

 public void Start()
{
loggingService.Info("MPS.GOA.ETLService is Started");
ThreadStart myThreadDelegate = new ThreadStart(StartService);
Thread myThread = new Thread(myThreadDelegate);
myThread.Start();

}

private void StartService()
{
timer.Elapsed += new System.Timers.ElapsedEventHandler(OnElapsedTime);
timer.Interval = 60000 * ServiceIntervalInMinutes; //1 minute 60000 milliseconds
timer.Enabled = true;
Process();
}

private void Process()
{
ExtractProcess.Start();
TransformProcess.Start();
}

有什么建议吗? Time Out Error

最佳答案

发生此错误的原因是您正在服务的 Start 方法中运行 extract 和 process 方法。这在 Visual Studio 中是可以的,但是当您安装服务并启动它时,服务控制管理器会等待 Start 方法返回,如果在一定时间内(默认为 30 秒)没有返回,那么它将返回这个错误。

您有多个选项,所有这些选项都将允许 Start 方法立即返回:

  1. 在单独的线程上调用提取和转换方法
  2. 异步调用提取和转换方法
  3. 使用计时器启动提取和转换过程

关于C# Topshelf超时异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27940912/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com