在 .net 标准中停止节俭 TThreadPoolServer 的正确方法
Propper way to stop a thrift TThreadPoolAsyncServer in .net standard
我创建了 TThreadPoolAsyncServer
工作正常。
_server = new TThreadPoolAsyncServer(
processorFactory: new TSingletonProcessorFactory( processor ),
serverTransport: serverSocket,
inputTransportFactory: new TFramedTransport.Factory(),
outputTransportFactory: new TFramedTransport.Factory(),
inputProtocolFactory: new TBinaryProtocol.Factory(),
outputProtocolFactory: new TBinaryProtocol.Factory(),
threadConfig: new TThreadPoolAsyncServer.Configuration(),
logger: _logger );
但是当我从 _server.ServeAsync( cancellationtoken );
触发取消令牌时,任务没有完成。
当我使用 _server.Stop();
函数时,服务器最终会停止,但服务器还会记录一些不太好看的错误:
Thrift.Transport.TTransportException: System.ObjectDisposedException: Cannot access a disposed
停止 TThreadPoolAsyncServer
的预期方法是什么?
对于偶然发现此问题的任何其他人,此问题将在版本 15 中修复。
https://issues.apache.org/jira/browse/THRIFT-5398
我创建了 TThreadPoolAsyncServer
工作正常。
_server = new TThreadPoolAsyncServer(
processorFactory: new TSingletonProcessorFactory( processor ),
serverTransport: serverSocket,
inputTransportFactory: new TFramedTransport.Factory(),
outputTransportFactory: new TFramedTransport.Factory(),
inputProtocolFactory: new TBinaryProtocol.Factory(),
outputProtocolFactory: new TBinaryProtocol.Factory(),
threadConfig: new TThreadPoolAsyncServer.Configuration(),
logger: _logger );
但是当我从 _server.ServeAsync( cancellationtoken );
触发取消令牌时,任务没有完成。
当我使用 _server.Stop();
函数时,服务器最终会停止,但服务器还会记录一些不太好看的错误:
Thrift.Transport.TTransportException: System.ObjectDisposedException: Cannot access a disposed
停止 TThreadPoolAsyncServer
的预期方法是什么?
对于偶然发现此问题的任何其他人,此问题将在版本 15 中修复。 https://issues.apache.org/jira/browse/THRIFT-5398