Пример #1
0
        /// <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);
        }
Пример #2
0
 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*/);
Пример #3
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));
 }