首页 新闻 会员 周边 捐助

用 TopShelf 实现的win服务,为啥会莫名奇妙的暂停

0
[待解决问题]

用 TopShelf  实现的win服务,为啥会莫名奇妙的暂停,就像在控制台中 敲回车命令,程序暂停一样的效果。

问题补充:

在线等,着急

lllhhu的主页 lllhhu | 初学一级 | 园豆:3
提问于:2018-01-04 13:21
< >
分享
所有回答(2)
0

暂停时的具体表现是什么?

dudu | 园豆:30778 (高人七级) | 2018-01-04 13:28

客户端连接一直没有返回,我的是网络程序,用的是thrift做服务端

支持(0) 反对(0) lllhhu | 园豆:3 (初学一级) | 2018-01-04 13:45

@lllhhu: 这个问题应该与TopShelf无关,很可能是服务端实现代码的问题,有没有用到async异步方法?有没有在异步方法中调用同步方法?

支持(0) 反对(0) dudu | 园豆:30778 (高人七级) | 2018-01-04 13:53

@dudu: 都没有

Host host = HostFactory.New(x =>
{
x.Service<CacheServiceServer>(s =>
{
s.ConstructUsing(name => new CacheServiceServer());
s.WhenStarted(server => server.Start());
s.WhenStopped(server => server.Stop());
});

x.RunAsLocalSystem();

x.SetDescription("提供缓存服务");
x.SetDisplayName("RedisCacheService");
x.SetServiceName("RedisCacheService");
});
host.Run();

支持(0) 反对(0) lllhhu | 园豆:3 (初学一级) | 2018-01-04 14:06

@lllhhu: 建议检查一下 CacheServiceServer 的实现代码

支持(0) 反对(0) dudu | 园豆:30778 (高人七级) | 2018-01-04 14:12

@dudu: 木有发现啥问题啊

    public class CacheServiceServer
    {
        TServer server = null;
         public void Start()
         {


            RedisCache.Contract.CacheService.Iface cacheService = new RedisCache.Server4ThriftRPC.CacheServiceImpl();

             Octopus.RedisCache.Contract.CacheService.Processor processor = new Contract.CacheService.Processor(cacheService);
             TServerTransport transport = new TServerSocket(8728);
            TServer server = new TThreadPoolServer(processor,transport);
             server.Serve();


        }

         public void Stop()
         {
             server.Stop();
         }
    }
支持(0) 反对(0) lllhhu | 园豆:3 (初学一级) | 2018-01-04 14:21

@lllhhu: 建议继承 ServiceControl 进行实现,参考 RedisService.cs

支持(0) 反对(0) dudu | 园豆:30778 (高人七级) | 2018-01-04 14:31

@dudu: 谢谢

支持(0) 反对(0) lllhhu | 园豆:3 (初学一级) | 2018-01-05 16:08
0

表示也碰到过,不过一直没去解决,手动重启的

cl@cnblog | 园豆:52 (初学一级) | 2018-01-05 03:25

TopShelf+thrift吗

支持(0) 反对(0) lllhhu | 园豆:3 (初学一级) | 2018-01-05 16:08

@lllhhu: TopShelf + Quartz.Net , 应该是程序问题 , 老大说要看在任务管理器里吧进程创建转储文件 看看,没搞过就一直处理

支持(0) 反对(0) cl@cnblog | 园豆:52 (初学一级) | 2018-01-06 01:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册