@@ -118,12 +118,11 @@ public static void SetDataPackageAdapter(this ITcpSocketClient client, IDataPack
118118 // 释放缓存
119119 if ( _cache . TryGetValue ( client , out var list ) )
120120 {
121- var items = list . Where ( i => i . Callback == callback ) . ToList ( ) ;
122- foreach ( var item in items )
121+ foreach ( var ( Adapter , Callback ) in list )
123122 {
124- client . ReceivedCallBack -= item . Callback ;
125- list . Remove ( item ) ;
123+ client . ReceivedCallBack -= Callback ;
126124 }
125+ list . Clear ( ) ;
127126 }
128127
129128 // 设置 ITcpSocketClient 的回调函数
@@ -134,7 +133,7 @@ public static void SetDataPackageAdapter(this ITcpSocketClient client, IDataPack
134133 } ;
135134
136135 // 设置 DataPackageAdapter 的回调函数
137- adapter . ReceivedCallBack = buffer => callback ( buffer ) ;
136+ adapter . ReceivedCallBack = callback ;
138137 }
139138
140139 /// <summary>
@@ -191,6 +190,19 @@ public static void SetDataPackageAdapter<TEntity>(this ITcpSocketClient client,
191190 } ;
192191 }
193192
193+ /// <summary>
194+ /// 通过指定 <see cref="IDataPackageHandler"/> 数据处理实例,设置数据适配器并配置回调方法
195+ /// </summary>
196+ /// <typeparam name="TEntity"></typeparam>
197+ /// <param name="client"></param>
198+ /// <param name="handler"></param>
199+ /// <param name="socketDataConverter"></param>
200+ /// <param name="callback"></param>
201+ public static void SetDataPackageAdapter < TEntity > ( this ITcpSocketClient client , IDataPackageHandler handler , IDataConverter < TEntity > socketDataConverter , Func < TEntity ? , Task > callback )
202+ {
203+ client . SetDataPackageAdapter ( new DataPackageAdapter ( handler ) , socketDataConverter , callback ) ;
204+ }
205+
194206 /// <summary>
195207 /// Configures the specified <see cref="ITcpSocketClient"/> to use a custom data package adapter and callback
196208 /// function.
0 commit comments