暂停时的具体表现是什么?
客户端连接一直没有返回,我的是网络程序,用的是thrift做服务端
@lllhhu: 这个问题应该与TopShelf无关,很可能是服务端实现代码的问题,有没有用到async
异步方法?有没有在异步方法中调用同步方法?
@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();
@lllhhu: 建议检查一下 CacheServiceServer 的实现代码
@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(); } }
@lllhhu: 建议继承 ServiceControl 进行实现,参考 RedisService.cs
@dudu: 谢谢
表示也碰到过,不过一直没去解决,手动重启的
TopShelf+thrift吗
@lllhhu: TopShelf + Quartz.Net , 应该是程序问题 , 老大说要看在任务管理器里吧进程创建转储文件 看看,没搞过就一直处理