diff --git a/src/Surging.Core/Surging.Core.DotNetty/DotNettyMessageSender.cs b/src/Surging.Core/Surging.Core.DotNetty/DotNettyMessageSender.cs index 731e8c7b..802dd6b7 100644 --- a/src/Surging.Core/Surging.Core.DotNetty/DotNettyMessageSender.cs +++ b/src/Surging.Core/Surging.Core.DotNetty/DotNettyMessageSender.cs @@ -8,7 +8,7 @@ namespace Surging.Core.DotNetty { - /// + /// /// 基于DotNetty的消息发送者基类。 /// public abstract class DotNettyMessageSender @@ -59,22 +59,42 @@ public void Dispose() /// 发送消息。 /// /// 消息内容。 - /// 一个任务。 + /// 一个任务。 public async Task SendAsync(TransportMessage message) { var buffer = GetByteBuffer(message); - await _channel.WriteAndFlushAsync(buffer); + try + { + await _channel.WriteAndFlushAsync(buffer); + } + finally + { + if (buffer != null) + { + ReferenceCountUtil.Release(buffer); + } + } } /// /// 发送消息并清空缓冲区。 /// /// 消息内容。 - /// 一个任务。 + /// 一个任务。 public async Task SendAndFlushAsync(TransportMessage message) { var buffer = GetByteBuffer(message); - await _channel.WriteAndFlushAsync(buffer); + try + { + await _channel.WriteAndFlushAsync(buffer); + } + finally + { + if (buffer != null) + { + ReferenceCountUtil.Release(buffer); + } + } } #endregion Implementation of IMessageSender @@ -98,24 +118,44 @@ public DotNettyServerMessageSender(ITransportMessageEncoder transportMessageEnco /// 发送消息。 /// /// 消息内容。 - /// 一个任务。 + /// 一个任务。 public async Task SendAsync(TransportMessage message) { var buffer = GetByteBuffer(message); - await _context.WriteAsync(buffer); + try + { + await _context.WriteAsync(buffer); + } + finally + { + if (buffer != null) + { + ReferenceCountUtil.Release(buffer); + } + } } /// /// 发送消息并清空缓冲区。 /// /// 消息内容。 - /// 一个任务。 + /// 一个任务。 public async Task SendAndFlushAsync(TransportMessage message) { var buffer = GetByteBuffer(message); - await _context.WriteAndFlushAsync(buffer); + try + { + await _context.WriteAndFlushAsync(buffer); + } + finally + { + if (buffer != null) + { + ReferenceCountUtil.Release(buffer); + } + } } #endregion Implementation of IMessageSender } -} \ No newline at end of file +}