gpt4 book ai didi

c# - 如何禁用 Windows 服务 C# 的超时?

转载 作者:行者123 更新时间:2023-11-30 13:48:21 25 4
gpt4 key购买 nike

我有一个可以正常运行和启动的 Windows 服务,但是,它运行一个后台线程(多个线程)来执行一些重要的计算。

经过一番挖掘,我发现这是由于所有 Windows 服务都有超时。目前,它从数据库中的一个表中读取数据,将其加载到一个对象中,然后对该对象进行一些分析。这一切都在 OnStart 方法中完成,然后调用其他方法。是否有一些技巧可以使服务保持运行或有任何方法可以在不进入注册表的情况下停止超时?谢谢

最佳答案

OnStart 函数不是用于执行需要很长时间的逻辑的地方。基本上,您需要在 OnStart 函数之外为您的逻辑创建一个类。您需要公开声明一个入口函数 - 即获取数据并开始处理它的函数。

例如

class ProcessingClass()
{
public void ThreadStartProc()
{
GetData();
StartProcessing();
}
}

在您的 onStart 方法中,创建一个新线程并将 ThreadStart 设置为您的 ThreadStartProc 函数。例如

Thread ProcessingThread;
ProcessingClass procClass = new ProcessingClass();

protected override void OnStart(string[] args)
{
ProcessingThread = new Thread(new ThreadStart(procClass.ThreadStartProc));
ProcessingThread.Start();
}

protected override void OnStop()
{
if (ProcessingThread != null)
{
ProcessingThread.Abort();
ProcessingThread.Join();
ProcessingThread = null;
}
}

在您的处理类中,您需要处理服务停止时将抛出的 ThreadAbortException。

关于c# - 如何禁用 Windows 服务 C# 的超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12899166/

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