在 .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