C# Dotnety WriteAsync不工作,但WriteAndFlushAsync工作
我在一台服务器上工作,我正在利用DotNetty。服务器所做的是接收消息,检查消息头,然后调用正确的消息事件。除了一件事之外,这一切都有效 假设我有一个名为C# Dotnety WriteAsync不工作,但WriteAndFlushAsync工作,c#,networking,C#,Networking,我在一台服务器上工作,我正在利用DotNetty。服务器所做的是接收消息,检查消息头,然后调用正确的消息事件。除了一件事之外,这一切都有效 假设我有一个名为LoginMessageEvent的消息事件。在这里,您希望发送多个响应(=composer),如登录结果和客户端详细信息。所以我的想法是有一个这样的QueueComposer函数: public Task QueueComposer(Composer composer) { return _channel.WriteAsync(co
LoginMessageEvent
的消息事件。在这里,您希望发送多个响应(=composer),如登录结果和客户端详细信息。所以我的想法是有一个这样的QueueComposer函数:
public Task QueueComposer(Composer composer)
{
return _channel.WriteAsync(composer);
}
public void Flush()
{
_channel.Flush();
}
public async Task SendComposer(Composer composer)
{
await _channel.WriteAndFlushAsync(composer);
}
并具有如下刷新功能:
public Task QueueComposer(Composer composer)
{
return _channel.WriteAsync(composer);
}
public void Flush()
{
_channel.Flush();
}
public async Task SendComposer(Composer composer)
{
await _channel.WriteAndFlushAsync(composer);
}
(_通道=通道)
因此,在我的消息事件中,发送内容的部分需要:
public async Task Handle(Session session, Event message)
{
Player player = await _playerController.Login(username, password);
if (player != null)
{
await session.QueueComposer(LoginResult.Compose(true));
await session.QueueComposer(ClientDetails.Compose(session));
session.Flush();
}
else
{
await session.Disconnect();
}
}
然而,这不会起任何作用。由于某些事件只发送一个响应,我还有一个函数,它将调用WriteAndFlushAsync
,如下所示:
public Task QueueComposer(Composer composer)
{
return _channel.WriteAsync(composer);
}
public void Flush()
{
_channel.Flush();
}
public async Task SendComposer(Composer composer)
{
await _channel.WriteAndFlushAsync(composer);
}
If我将在此中更改If语句中的代码:
await session.SendComposer(LoginResult.Compose(true));
await session.SendComposer(ClientDetails.Compose(session));
我的头脑认为这并不理想,所以我想知道为什么单独的QueueComposer
和Flush
不能工作