Просмотр исходного кода

修改ETTaskHelper.GetContextAsync方法,改成泛型,防止返回的类型不对,仍然返回null,这样容易发生传context类型错误

tanghai 1 год назад
Родитель
Сommit
e8c8ff2e10

+ 7 - 2
Unity/Packages/cn.etetet.core/Runtime/ETTask/ETTaskHelper.cs

@@ -5,11 +5,16 @@ namespace ET
 {
     public static class ETTaskHelper
     {
-        public static async ETTask<object> GetContextAsync()
+        public static async ETTask<T> GetContextAsync<T>() where T: class
         {
             ETTask<object> tcs = ETTask<object>.Create(true);
             tcs.TaskType = TaskType.ContextTask;
-            return await tcs;
+            object ret = await tcs;
+            if (ret == null)
+            {
+                return null;
+            }
+            return (T)ret;
         }
         
         public static bool IsCancel(this ETCancellationToken self)

+ 2 - 2
Unity/Packages/cn.etetet.core/Scripts/Hotfix/Share/ETCancellationTokenHelper.cs

@@ -34,7 +34,7 @@ namespace ET
             {
                 throw new Exception("add cancel token is null");
             }
-            ETCancellationToken cancelToken = await ETTaskHelper.GetContextAsync() as ETCancellationToken;
+            ETCancellationToken cancelToken = await ETTaskHelper.GetContextAsync<ETCancellationToken>();
             
             cancelToken?.Add(addCancelToken.Cancel);
             
@@ -51,7 +51,7 @@ namespace ET
                 throw new Exception("add cancel token is null");
             }
             
-            ETCancellationToken cancelToken = await ETTaskHelper.GetContextAsync() as ETCancellationToken;
+            ETCancellationToken cancelToken = await ETTaskHelper.GetContextAsync<ETCancellationToken>();
             
             cancelToken?.Add(addCancelToken.Cancel);
             

+ 1 - 1
Unity/Packages/cn.etetet.core/Scripts/Hotfix/Share/Message/SessionSystem.cs

@@ -66,7 +66,7 @@ namespace ET
                 action.SetResult(response);
             }
 
-            ETCancellationToken cancellationToken = await ETTaskHelper.GetContextAsync() as ETCancellationToken;
+            ETCancellationToken cancellationToken = await ETTaskHelper.GetContextAsync<ETCancellationToken>();
             IResponse ret;
             try
             {

+ 1 - 1
Unity/Packages/cn.etetet.core/Scripts/Hotfix/Share/ObjectWait/ObjectWaitSystem.cs

@@ -26,7 +26,7 @@ namespace ET
         public static async ETTask<T> Wait<T>(this ObjectWait self) where T : struct, IWaitType
         {
             ResultCallback<T> tcs = new ResultCallback<T>();
-            ETCancellationToken cancellationToken = await ETTaskHelper.GetContextAsync() as ETCancellationToken;
+            ETCancellationToken cancellationToken = await ETTaskHelper.GetContextAsync<ETCancellationToken>();
             self.tcss.Add(typeof (T), tcs);
             
             void CancelAction()

+ 2 - 2
Unity/Packages/cn.etetet.core/Scripts/Hotfix/Share/Timer/TimerComponentSystem.cs

@@ -158,7 +158,7 @@ namespace ET
                 }
             }
 
-            ETCancellationToken cancellationToken = await ETTaskHelper.GetContextAsync() as ETCancellationToken;
+            ETCancellationToken cancellationToken = await ETTaskHelper.GetContextAsync<ETCancellationToken>();
             try
             {
                 cancellationToken?.Add(CancelAction);
@@ -197,7 +197,7 @@ namespace ET
                 }
             }
 
-            ETCancellationToken cancellationToken = await ETTaskHelper.GetContextAsync() as ETCancellationToken;
+            ETCancellationToken cancellationToken = await ETTaskHelper.GetContextAsync<ETCancellationToken>();
             try
             {
                 cancellationToken?.Add(CancelAction);

+ 1 - 1
Unity/Packages/cn.etetet.statesync/Scripts/Hotfix/Client/Main/Move/MoveHelper.cs

@@ -20,7 +20,7 @@ namespace ET.Client
             
             // 一直等到unit发送stop
             Wait_UnitStop waitUnitStop = await objectWait.Wait<Wait_UnitStop>();
-            ETCancellationToken cancellationToken = await ETTaskHelper.GetContextAsync() as ETCancellationToken;
+            ETCancellationToken cancellationToken = await ETTaskHelper.GetContextAsync<ETCancellationToken>();
             if (cancellationToken.IsCancel())
             {
                 return WaitTypeError.Cancel;

+ 1 - 11
Unity/Packages/cn.etetet.statesync/Scripts/HotfixView/Client/Opera/OperaComponentSystem.cs

@@ -40,11 +40,6 @@ namespace ET.Client
             {
                 self.TestCancelAfter().WithContext(new ETCancellationToken());
             }
-            
-            if (Input.GetKeyDown(KeyCode.D))
-            {
-                self.TestCancelAfter2().NoContext();
-            }
 
             if (Input.GetKeyDown(KeyCode.T))
             {
@@ -76,7 +71,7 @@ namespace ET.Client
         
         private static async ETTask TestCancelAfter(this OperaComponent self)
         {
-            ETCancellationToken oldCancellationToken = await ETTaskHelper.GetContextAsync() as ETCancellationToken;
+            ETCancellationToken oldCancellationToken = await ETTaskHelper.GetContextAsync<ETCancellationToken>();
             
             Log.Debug($"TestCancelAfter start");
             ETCancellationToken newCancellationToken = new();
@@ -92,10 +87,5 @@ namespace ET.Client
             }
             Log.Debug($"TestCancelAfter end");
         }
-
-        private static async ETTask TestCancelAfter2(this OperaComponent self)
-        {
-            
-        }
     }
 }