gpt4 book ai didi

c# - Windows 服务未完全启动

转载 作者:行者123 更新时间:2023-11-30 15:07:45 26 4
gpt4 key购买 nike

我用 C# 制作了这个小型 Windows 服务,我相信我的 ThreadPool 代码可能做错了什么,导致我的 Windows 服务无法完全启动。如果您一定要知道,Windows 服务似乎运行得很好,只是当查看服务控制台时,它仍然显示它正在“启动”。当我重新启动我的服务器时,即使我已将其设置为自动启动,该服务似乎又停止了。

请看下面我的代码:

protected override void OnStart(string[] args)
{
int itemCount = itemList.Count;

this.doneEvents = new ManualResetEvent[itemCount];
for (int i = 0; i < itemCount; i++)
{
int oId = this.itemList[i];
this.doneEvents[i] = new ManualResetEvent(false);

ThreadPool.QueueUserWorkItem(data =>
{
while (this.activated)
{
DateTime start = DateTime.Now;

// my code here

// choke point
TimeSpan duration = (DateTime.Now - start);
if (duration.Milliseconds < CONST_WAITMILLISECONDS)
Thread.Sleep((CONST_WAITMILLISECONDS - duration.Milliseconds));
}

this.doneEvents[i].Set(); // thread done

}, oId);
}

WaitHandle.WaitAll(doneEvents);

}

最佳答案

您正在阻止 WaitHandle.WaitAll(doneEvents); 调用 OnStart。 Windows 尝试启动该服务,但由于 WaitAll 而超时。

如果您希望 Windows 将服务视为已启动,则需要让 OnStart 完成。

关于c# - Windows 服务未完全启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6272991/

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