/// <summary> /// 处理 ClientExitNetwork 消息。 /// </summary> /// <param name="args">处理时所需要的信息。</param> private void HandleClientExitNetwork(HandleMessageArgs args) { Logger.Log("收到消息: 客户端离开分布网络。"); KEndPoint remoteEndPoint = args.Message.Header.SourceEndPoint; // 只是简单的移除 int clItemIndex; ConnectionListItem item = ConnectionList.FindConnectionListItem(remoteEndPoint, out clItemIndex); if (item != null) { Logger.Log("找到项目并移除。"); lock (ConnectionList) { // 一样,应该不用担心前面的项被移动到后面去导致索引错误的事情吧 ConnectionList.RemoveAt(clItemIndex); EventHelper.RaiseEvent(ConnectionListChanged, this, EventArgs.Empty); } } Logger.Log("转发消息。"); // 转发 BroadcastMessage(args.Message); }