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();
        }
    }
}

c# Windows Service - UDP监听器停止服务形式启动器

参见https://stackoverflow.com/a/649948/1736944

OnStart事件应该只让你的服务运行。这不是一个做实际工作的好地方。

Error 1053是当OnStart在设定的超时时间内(默认超时时间约为30秒)未能返回时Windows报告的错误。