Windows服务因超时而失败

Steventnorris

我已经使用C#创建了一个Windows服务,该服务可以很好地安装,但是当我尝试运行它时,出现“错误1053:该服务未及时响应启动或控制请求”。我是Windows服务的新手,并且不确定为什么会发生这种情况。该服务的以下代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using System.Messaging;
using System.Threading;

namespace DataStream
{
    public partial class DataStreamService : ServiceBase
    {
        private EventLog logger;

        public DataStreamService()
        {
            this.AutoLog = false;
            if (!System.Diagnostics.EventLog.SourceExists("DataStream"))
            {
                EventLog.CreateEventSource("DataStream", "DataStreamLog");
            }
            logger = new EventLog();
            logger.Source = "DataStream";
        }

        protected override void OnStart(string[] args)
        {
            logger.WriteEntry("*-Service Started-*");
            Thread workThread = new Thread(this.moveTheQueue);
            workThread.Start();

        }

        private void moveTheQueue(object data)
        {
            logger.WriteEntry("*-Connecting to Queue-*");
            if (MessageQueue.Exists(@"./Private/testqueue"))
            {
                MessageQueue queue = new MessageQueue(@"./Private/testqueue");
                MessageEnumerator enumerator = queue.GetMessageEnumerator2();
                Message msg;

                while (enumerator.MoveNext(new TimeSpan(0, 0, 20)))
                {
                    try
                    {
                        msg = queue.PeekById(enumerator.Current.Id);
                        System.IO.File.WriteAllText(@"C:\Users\Public\MSMQTest\" + msg.Label + enumerator.Current.Id + "_" + DateTime.Now.ToString() + ".xml", msg.Body.ToString());
                        queue.ReceiveById(enumerator.Current.Id);
                        logger.WriteEntry("*-Received Message with Id " + msg.Id + " and Label " + msg.Label);
                    }
                    catch (Exception e)
                    {
                        logger.WriteEntry("*-ERROR: Failed to Obtain Message with Id " + enumerator.Current.Id);
                    }
                }
            }
            else
            {
                logger.WriteEntry("*-ERROR: No queue found. Check user credentials.-*");
            }
            Stop();
        }

        protected override void OnStop()
        {
            EventLog.WriteEntry("*-Service Stopped-*");
        }
    }
}
用户名

无需代码转储。

当服务由系统启动时,OnStart在您收到该消息之前,它们只有很短的时间从方法中返回

解决方案是将所有计算量大的工作移到不同的线程上。

...当然,您已经在这样做了。伟大的。但是您也正在构造器中进行工作,这可能会花费太长时间甚至可能失败。因此,请将该工作从构造函数中拉出,并将其放入后台线程中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Windows 7 Box的Kitchen Converge因启动超时而失败

来自分类Dev

curl命令因超时而失败

来自分类Dev

Applinx API中的GXWaitForCursor总是因超时而失败

来自分类Dev

Java程序因某些测试用例超时而失败

来自分类Dev

查询构建因超时而失败-Azure DevOps Server

来自分类Dev

Applinx API中的GXWaitForCursor总是因超时而失败

来自分类Dev

为什么@jdbc查询因连接超时而失败?

来自分类Dev

Java的XML DocumentBuilder会因解析超时而失败?

来自分类Dev

Web服务客户端-由于超时而导致构造失败(代理问题)

来自分类Dev

为什么我在这里“因超时而被终止”?

来自分类Dev

多处理线程池因超时而关闭

来自分类Dev

如何检测用户何时因会话超时而注销?

来自分类Dev

AngularJS茉莉花承诺测试由于超时而失败

来自分类Dev

由于Spring源中的超时而导致Tomcat启动失败

来自分类Dev

EDx安装任务始终因超时而失败

来自分类Dev

为什么我的 sinon 测试超时而不是失败?

来自分类Dev

为什么与ActorSystemActivator捆绑的OSGI随启动时Logger超时而失败?

来自分类Dev

为什么我的所有SSH尝试都由于超时而失败?

来自分类Dev

Docker构建因“端口443:连接超时”而失败

来自分类Dev

使用superagent +的Mocha测试承诺超时,而不是因“期望”而失败

来自分类Dev

如何更改 Laravel 中间件,从而使由于会话超时而导致登录失败的 ajax 请求失败

来自分类Dev

Jenkins构建因Windows上的GitLockFailedException而失败

来自分类Dev

在Storm中,是否有一种方法可以计算由于超时而失败的元组的数量?

来自分类Dev

SonarQube Eclipse插件3.4由于连接超时而无法访问Sonar服务器

来自分类Dev

IIS上的SQLConnection超时而不是本地的

来自分类Dev

超时而不会杀死bash中的进程

来自分类Dev

Nhibernate查询超时而SQL查询不

来自分类Dev

Windows的Docker:驱动器共享因未知原因失败

来自分类Dev

Windows 10 Update 1511因DiskCryptor整个磁盘加密而失败

Related 相关文章

  1. 1

    Windows 7 Box的Kitchen Converge因启动超时而失败

  2. 2

    curl命令因超时而失败

  3. 3

    Applinx API中的GXWaitForCursor总是因超时而失败

  4. 4

    Java程序因某些测试用例超时而失败

  5. 5

    查询构建因超时而失败-Azure DevOps Server

  6. 6

    Applinx API中的GXWaitForCursor总是因超时而失败

  7. 7

    为什么@jdbc查询因连接超时而失败?

  8. 8

    Java的XML DocumentBuilder会因解析超时而失败?

  9. 9

    Web服务客户端-由于超时而导致构造失败(代理问题)

  10. 10

    为什么我在这里“因超时而被终止”?

  11. 11

    多处理线程池因超时而关闭

  12. 12

    如何检测用户何时因会话超时而注销?

  13. 13

    AngularJS茉莉花承诺测试由于超时而失败

  14. 14

    由于Spring源中的超时而导致Tomcat启动失败

  15. 15

    EDx安装任务始终因超时而失败

  16. 16

    为什么我的 sinon 测试超时而不是失败?

  17. 17

    为什么与ActorSystemActivator捆绑的OSGI随启动时Logger超时而失败?

  18. 18

    为什么我的所有SSH尝试都由于超时而失败?

  19. 19

    Docker构建因“端口443:连接超时”而失败

  20. 20

    使用superagent +的Mocha测试承诺超时,而不是因“期望”而失败

  21. 21

    如何更改 Laravel 中间件,从而使由于会话超时而导致登录失败的 ajax 请求失败

  22. 22

    Jenkins构建因Windows上的GitLockFailedException而失败

  23. 23

    在Storm中,是否有一种方法可以计算由于超时而失败的元组的数量?

  24. 24

    SonarQube Eclipse插件3.4由于连接超时而无法访问Sonar服务器

  25. 25

    IIS上的SQLConnection超时而不是本地的

  26. 26

    超时而不会杀死bash中的进程

  27. 27

    Nhibernate查询超时而SQL查询不

  28. 28

    Windows的Docker:驱动器共享因未知原因失败

  29. 29

    Windows 10 Update 1511因DiskCryptor整个磁盘加密而失败

热门标签

归档