1- using System . Threading . Tasks ;
1+ using System . Threading . Tasks ;
22using GameFrameX . Runtime ;
33using GameFrameX . Web . Runtime ;
44
@@ -14,26 +14,43 @@ private sealed class WebProtoBufData : WebManager.WebData
1414 /// <summary>
1515 /// 获取请求任务的完成源,用于异步操作的控制和结果返回
1616 /// </summary>
17- public readonly TaskCompletionSource < WebBufferResult > Task ;
17+ public TaskCompletionSource < WebBufferResult > Task { get ; private set ; }
1818
1919 /// <summary>
2020 /// 获取要发送的Protocol Buffer序列化后的字节数组数据
2121 /// </summary>
22- public readonly byte [ ] SendData ;
22+ public byte [ ] SendData { get ; private set ; }
2323
2424 /// <summary>
25- /// 初始化Web ProtoBuf请求数据
25+ /// 无参构造函数(ReferencePool 需要new约束)
2626 /// </summary>
27- /// <param name="url">请求URL</param>
28- /// <param name="sendData">要发送的Protocol Buffer序列化数据</param>
29- /// <param name="task">请求任务的完成源</param>
30- /// <param name="userData">用户自定义数据</param>
31- public WebProtoBufData ( string url , byte [ ] sendData , TaskCompletionSource < WebBufferResult > task , object userData ) : base ( false , url , userData )
27+ public WebProtoBufData ( ) { }
28+
29+ /// <summary>
30+ /// 创建Web ProtoBuf请求数据
31+ /// </summary>
32+ public static WebProtoBufData Create ( string url , byte [ ] sendData , TaskCompletionSource < WebBufferResult > task , object userData )
3233 {
33- task . CheckNull ( nameof ( task ) ) ;
34- SendData = sendData ;
35- Task = task ;
34+ var data = ReferencePool . Acquire < WebProtoBufData > ( ) ;
35+ data . URL = url ;
36+ data . IsGet = false ;
37+ data . UserData = userData ;
38+ data . Task = task ;
39+ data . SendData = sendData ;
40+ return data ;
41+ }
42+
43+ public override void Clear ( )
44+ {
45+ if ( Task != null )
46+ {
47+ Task . TrySetCanceled ( ) ;
48+ Task = null ;
49+ }
50+
51+ SendData = null ;
52+ base . Clear ( ) ;
3653 }
3754 }
3855 }
39- }
56+ }
0 commit comments