From 846dc4d4bca93e21fc30dbaf5e5e64a848d73858 Mon Sep 17 00:00:00 2001 From: ALEXTANG <574809918@qq.com> Date: Mon, 24 Jul 2023 13:17:59 +0800 Subject: [PATCH] Fixed the session dispose Fixed the session dispose --- .../DotNet/Core/Network/Entity/Session/Session.cs | 6 ++++-- .../Addressable/AddressableRouteComponent.cs | 14 +++++++------- .../Core/Network/Message/Route/RouteComponent.cs | 12 ++++++------ 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/Assets/GameScripts/DotNet/Core/Network/Entity/Session/Session.cs b/Assets/GameScripts/DotNet/Core/Network/Entity/Session/Session.cs index 44c40be1..26a645eb 100644 --- a/Assets/GameScripts/DotNet/Core/Network/Entity/Session/Session.cs +++ b/Assets/GameScripts/DotNet/Core/Network/Entity/Session/Session.cs @@ -125,12 +125,14 @@ namespace TEngine.Core.Network NetworkThread.Instance?.RemoveChannel(networkId, channelId); }); } - + + this.NetworkId = 0; + this.ChannelId = 0; + base.Dispose(); Sessions.Remove(id); #if NETDEBUG Log.Debug($"Sessions Dispose Count:{Sessions.Count}"); #endif - base.Dispose(); } public virtual void Send(object message, uint rpcId = 0, long routeId = 0) diff --git a/Assets/GameScripts/DotNet/Core/Network/Message/Addressable/AddressableRouteComponent.cs b/Assets/GameScripts/DotNet/Core/Network/Message/Addressable/AddressableRouteComponent.cs index 853f5920..83b8ae47 100644 --- a/Assets/GameScripts/DotNet/Core/Network/Message/Addressable/AddressableRouteComponent.cs +++ b/Assets/GameScripts/DotNet/Core/Network/Message/Addressable/AddressableRouteComponent.cs @@ -7,20 +7,20 @@ namespace TEngine.Core.Network; public sealed class AddressableRouteComponent : Entity { private long _routeId; - private long _addressableId; + public long AddressableId { get; private set; } public static readonly CoroutineLockQueueType AddressableRouteMessageLock = new CoroutineLockQueueType("AddressableRouteMessageLock"); public override void Dispose() { _routeId = 0; - _addressableId = 0; + this.AddressableId = 0; base.Dispose(); } public void SetAddressableId(long addressableId) { - _addressableId = addressableId; + this.AddressableId = addressableId; } public void Send(IAddressableRouteMessage message) @@ -44,13 +44,13 @@ public sealed class AddressableRouteComponent : Entity var runtimeId = RuntimeId; IResponse iRouteResponse = null; - using (await AddressableRouteMessageLock.Lock(_addressableId, "AddressableRouteComponent Call MemoryStream")) + using (await AddressableRouteMessageLock.Lock(this.AddressableId, "AddressableRouteComponent Call MemoryStream")) { while (!IsDisposed) { if (_routeId == 0) { - _routeId = await AddressableHelper.GetAddressableRouteId(Scene, _addressableId); + _routeId = await AddressableHelper.GetAddressableRouteId(Scene, this.AddressableId); } if (_routeId == 0) @@ -110,13 +110,13 @@ public sealed class AddressableRouteComponent : Entity var failCount = 0; var runtimeId = RuntimeId; - using (await AddressableRouteMessageLock.Lock(_addressableId,"AddressableRouteComponent Call")) + using (await AddressableRouteMessageLock.Lock(this.AddressableId,"AddressableRouteComponent Call")) { while (true) { if (_routeId == 0) { - _routeId = await AddressableHelper.GetAddressableRouteId(Scene, _addressableId); + _routeId = await AddressableHelper.GetAddressableRouteId(Scene, this.AddressableId); } if (_routeId == 0) diff --git a/Assets/GameScripts/DotNet/Core/Network/Message/Route/RouteComponent.cs b/Assets/GameScripts/DotNet/Core/Network/Message/Route/RouteComponent.cs index 0dc9fe91..08eb3abb 100644 --- a/Assets/GameScripts/DotNet/Core/Network/Message/Route/RouteComponent.cs +++ b/Assets/GameScripts/DotNet/Core/Network/Message/Route/RouteComponent.cs @@ -6,31 +6,31 @@ namespace TEngine.Core.Network; /// public sealed class RouteComponent : Entity { - private readonly Dictionary _routeAddress = new Dictionary(); + public readonly Dictionary RouteAddress = new Dictionary(); public void AddAddress(long routeType, long routeId) { - _routeAddress.Add(routeType, routeId); + this.RouteAddress.Add(routeType, routeId); } public void RemoveAddress(long routeType) { - _routeAddress.Remove(routeType); + this.RouteAddress.Remove(routeType); } public long GetRouteId(long routeType) { - return _routeAddress.TryGetValue(routeType, out var routeId) ? routeId : 0; + return this.RouteAddress.TryGetValue(routeType, out var routeId) ? routeId : 0; } public bool TryGetRouteId(long routeType, out long routeId) { - return _routeAddress.TryGetValue(routeType, out routeId); + return this.RouteAddress.TryGetValue(routeType, out routeId); } public override void Dispose() { - _routeAddress.Clear(); + this.RouteAddress.Clear(); base.Dispose(); } }