c# Windows Service - UDP监听器停止服务形式启动器
本文关键字:服务 启动 Service Windows UDP 监听器 | 更新日期: 2023-09-27 18:03:02
我正在尝试创建一个侦听UDP数据包的服务。它在调试模式下工作得很好。当我将它安装到服务中时,问题就开始了。从OnStart()中运行startListener()。当侦听器运行时,服务停止,当我将其注释掉并再次尝试时,它可以工作。1053是弹出的错误代码。
public partial class Service1 : ServiceBase
{
private const int listenPort = 9;
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
StartListener();
}
protected override void OnStop()
{
}
private static void StartListener()
{
UdpClient listener = new UdpClient(listenPort);
IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort);
try
{
byte[] bytes = listener.Receive(ref groupEP);
string mac = string.Join("", bytes.Skip(6).Take(6).Select(b => b.ToString("x2")));
}
catch (Exception e)
{
}
finally
{
listener.Close();
}
}
}
参见https://stackoverflow.com/a/649948/1736944
OnStart事件应该只让你的服务运行。这不是一个做实际工作的好地方。
Error 1053是当OnStart在设定的超时时间内(默认超时时间约为30秒)未能返回时Windows报告的错误。