我的 MessageWebSocket.OutputStream 放在哪里?

Where does my MessageWebSocket.OutputStream dispose?

我正在努力寻找我的 MessageWebSocket.OutputStream 的处置位置。

WebsocketManager():

public WebsocketManager()
    {
        baseInit();
    }

baseInit():

private void baseInit()
    {
        messageWebsocket = new MessageWebSocket();
    }

连接():

public async void connect(string token, IEventAggregator eventAggregator, EvaLogger evaLogger)
    {
        try
        {
            messageWebsocket.SetRequestHeader("iPlanetDirectoryPro", token);
            _eventAggregator = eventAggregator;
            _evaLogger = evaLogger;
            _localDataManager = new SqliteLocalDataManager(_evaLogger, _eventAggregator);
            messageWebsocket.MessageReceived += OnMessageReceived;
            messageWebsocket.Closed += OnClosed;
            messageWebsocket.Control.MessageType = SocketMessageType.Utf8;
            await messageWebsocket.ConnectAsync(WSURI);
        }
        catch (Exception e)
        {
            _evaLogger.Error(e.Message, e);
        }
    }

requestChats():

public async void requestChats()
    {
        DataWriter dataWriter = new DataWriter(messageWebsocket.OutputStream);
        dataWriter.WriteString(WebsocketRequestFactory.Create(SocketEventsEnm.GET_CHATS));
        await SendData(dataWriter);
    }

sendTextMessage():

public async void sendTextMessage(long chatId, string message)
    {
        DataWriter dataWriter = new DataWriter(messageWebsocket.OutputStream);
        dataWriter.WriteString(WebsocketRequestFactory.Create(SocketEventsEnm.MESSAGE_OUT, chatId, message));
        await SendData(dataWriter);
    }

发送数据():

private async Task SendData(DataWriter dataWriter)
    {
        try
        {
            _evaLogger.Info("Trying to send data...");
            await dataWriter.StoreAsync();
            _evaLogger.Info("Data was sent");
        }
        catch (Exception e)
        {
            _evaLogger.Error(e.Message, e);
        }
    }

一切都按预期工作,我可以毫无问题地调用 requestChats(),但是当我调用 sendTextMessage() 时,我得到一个 System.ObjectDisposedException。我也可以调用 requestChats() 而不是 sendTextMessage()。但是在我第二次调用这些方法之一之后,我将得到 System.ObjectDisposedException

我很确定它是 MessageWebSocket.OutputStream 被处置的,但我不知道它被处置在哪里。但也许这是关于线程而不是关于处置的事情?

如果您需要任何其他信息,请直接询问。我整天都在为这个问题苦苦挣扎。

编辑 1:

还是没弄清楚问题所在。今天我尝试了以下操作:

我很感激每一个想法,即使它只是一个非常小的想法...

我能够解决问题。在发送数据之前,我总是在创建一个新的 DataWriter。现在我只创建一个 DataWriter,当我将 WebSocket 连接到服务器时,它会被初始化。

我猜问题是当垃圾收集器清理数据写入器时,输出流关闭了。 Imo datawriter 不应该有那么大的权力,但这是我唯一的解释。