/// <summary> /// 创建 TSocketTask 对象并向线程池提交异步 Socket 任务 /// </summary> /// <param name="socketTaskProc">任务入口函数</param> /// <param name="sender">发起对象, 如server, client,agent对象</param> /// <param name="connId">连接id</param> /// <param name="buffer">数据</param> /// <param name="bufferSize">数据长度</param> /// <param name="taskBufferType">数据类型</param> /// <param name="wParam">自定义参数</param> /// <param name="lParam">自定义参数</param> /// <param name="maxWait">最大等待时间(毫秒,默认:INFINITE即-1,一直等待)</param> /// <returns>TRUE -- 成功,FALSE -- 失败,可通过 SYS_GetLastError() 获取系统错误代码,其中,错误码 ERROR_DESTINATION_ELEMENT_FULL 表示任务队列已满</returns> public bool SubmitSocketTask(SocketTaskProc socketTaskProc, IntPtr sender, IntPtr connId, byte[] buffer, int bufferSize, TaskBufferType taskBufferType, IntPtr wParam, IntPtr lParam, int maxWait = -1) { var task = CreateSocketTask(socketTaskProc, sender, connId, buffer, bufferSize, taskBufferType, wParam, lParam); if (task == IntPtr.Zero) { return(false); } var ret = SubmitSocketTask(task, maxWait); if (!ret) { DestroySocketTask(task); } return(ret); }
public static extern IntPtr Create_HP_SocketTaskObj(SocketTaskProc fnTaskProc, IntPtr pSender, IntPtr connId, IntPtr pBuffer, int iBuffLen, TaskBufferType enBuffType /*= TBT_COPY*/, IntPtr wParam /*= 0*/, IntPtr lParam /*= 0*/);
/// <summary> /// 创建 TSocketTask 对象 /// 创建任务对象,该对象最终需由 DestroySocketTask() 销毁 /// </summary> /// <param name="socketTaskProc">任务入口函数</param> /// <param name="sender">发起对象, 如server, client,agent对象</param> /// <param name="connId">连接id</param> /// <param name="buffer">数据</param> /// <param name="bufferSize">数据长度</param> /// <param name="taskBufferType">数据类型</param> /// <param name="wParam">自定义参数</param> /// <param name="lParam">自定义参数</param> /// <returns>TRUE -- 成功,FALSE -- 失败,可通过 SYS_GetLastError() 获取系统错误代码,其中,错误码 ERROR_DESTINATION_ELEMENT_FULL 表示任务队列已满</returns> public static IntPtr CreateSocketTask(SocketTaskProc socketTaskProc, IntPtr sender, IntPtr connId, byte[] buffer, int bufferSize, TaskBufferType taskBufferType, IntPtr wParam, IntPtr lParam) { return(ThreadPoolSdk.Create_HP_SocketTaskObj(socketTaskProc, sender, connId, buffer, bufferSize, taskBufferType, wParam, lParam)); }