C# 如何在窗口服务中执行代码?

C# 如何在窗口服务中执行代码?,c#,service,window,execution,C#,Service,Window,Execution,我被要求开发一个C#windows服务。但是,我习惯于使用用户输入创建GUI 由于windows服务是自动化的,我想知道代码是如何执行的 我的意思是我如何控制流量 有人能澄清一下吗?我没有找到很多关于窗口服务的信息 Windows服务从OnStart开始执行,通常从此处开始的重复执行可能是一个计时器。当服务在顶部停止时,调用方法。这可能是一个很好的起点 protected override void OnStart(string[] args) { base.OnStart(args

我被要求开发一个C#windows服务。但是,我习惯于使用用户输入创建GUI

由于windows服务是自动化的,我想知道代码是如何执行的

我的意思是我如何控制流量


有人能澄清一下吗?我没有找到很多关于窗口服务的信息

Windows服务从OnStart开始执行,通常从此处开始的重复执行可能是一个计时器。当服务在顶部停止时,调用方法。这可能是一个很好的起点

protected override void OnStart(string[] args)
  {
    base.OnStart(args);

    //TODO: place your start code here
  }

  protected override void OnStop()
  {
    base.OnStop();

    //TODO: clean up any variables and stop any threads
  }

代码在
OnStart()中启动

您通常会从它启动一个线程到另一个函数,以便
OnStart()
可以返回并启动服务


OnStop
OnShutdown
等一样,您可以在这里清理所有东西。

我只是想问一下,不同的做法会是什么样的呢?looks是一个副本,它指的是大量的资源。
OnStart
通常有30秒的时间,等返回-否则您的进程将被终止Dil:您知道Windows服务是否将执行系统调用吗?对我来说,它不起作用(使用本地系统帐户启动服务)。
protected override void OnStart(string[] args)
    {
        try
        {
            timer.AutoReset = true;
            timer.Enabled = true;
            timer.Start();

            serviceThread = new Thread(new ThreadStart(Delete));
            clientCleanupThread = new Thread(new ThreadStart(removeExpirery));
            enableAutoSubscribeProduct = new Thread(new ThreadStart(Products));

            serviceThread.Start();
            clientCleanupThread.Start();


            enableAutoSubscribeProduct.Start();


        }
        catch (Exception ex)
        {

            Log.Error("Error on thread start " + ex.Message);
        }
    }
protected override void OnStart(string[] args)
    {
        try
        {
            timer.AutoReset = true;
            timer.Enabled = true;
            timer.Start();

            serviceThread = new Thread(new ThreadStart(Delete));
            clientCleanupThread = new Thread(new ThreadStart(removeExpirery));
            enableAutoSubscribeProduct = new Thread(new ThreadStart(Products));

            serviceThread.Start();
            clientCleanupThread.Start();


            enableAutoSubscribeProduct.Start();


        }
        catch (Exception ex)
        {

            Log.Error("Error on thread start " + ex.Message);
        }
    }