BeginReceive Socket通讯中 怎样强制关闭BeginReceive()开始的线程?就是说,如果一个Socket通过BeginReceive开始了接受数据的过程,我怎样强行结束这一过程... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 异步 BeginReceive 操作必须通过调用 EndReceive 方法来完成。通常,该方法由 callback 委托调用。此方法在操作完成前不会进入阻止状态。若要一直阻塞到操作完成时为止,请使用 Receive 方法重载中的一个。若要取消挂起的 BeginReceive,请调用 Close 方法。有关使用异步编程模型的详细信息,请参见 使用异步方式调用同步方法。转自MSDN 在不断的 死循环中加一个bool 变量 来判断 线程的状态false 就 开始true 就 停止 还是说你是要关闭线程但是不关闭连线?只是就问题上来看,强制结束这过程,Close是最简单的方法... 是的 我只要关闭接受信息线程 不关闭连接怎么Close?难道socket.close()? static bool myEnd = true;static void CallbackMethod(IAsyncResult ar) { if(myEnd) return; // Retrieve the delegate. AsyncMethodCaller caller = (AsyncMethodCaller) ar.AsyncState; // Call EndInvoke to retrieve the results. string returnValue = caller.EndInvoke(out threadId, ar); Console.WriteLine("The call executed on thread {0}, with return value \"{1}\".", threadId, returnValue);}用法差不多吧.... 不关闭连接的前提....socket.close()关闭了连接 Begin是异步的,就是调用Begin开始处理后,就等着底层的Socket接收或者发送完数据后,才会触发CallbackMethod方法的。你可以试着把Begin方法放在一个线程中,然后结束线程? 阿捷 我之前遇到了类似的问题,所以我在BeginReceive()之前定义了一个等待的ManualResetEvent,waitone函数中设定了等待时间,到时间自动返回。。 用纯C#写一个管理系统 不用SQL datagrid里加入的html button控件如何在前台页面上根据判断结果来让他是否显示? winform运行一段时间会报错(未将对象应用设置到对象的实例) 如何判断数据库是否连接上了?在线等,解决就给分 求助:winform下的listbox问题 我咋没问题问呢,积分该怎么用啊 求教转义字符的用法 如何控制DataGrid的行的颜色??? 如何得到上传/下载文件时的总时间,在进度条上实现 Visual Studio .NET 2003简体中文企业版的安装问题!!! 反编译DLL文件 vs2008如何更改项目名称?
转自MSDN
加一个bool 变量
来判断 线程的状态
false 就 开始
true 就 停止
但是不关闭连线?
只是就问题上来看,强制结束这过程,Close是最简单的方法...
怎么Close?难道socket.close()?
static void CallbackMethod(IAsyncResult ar)
{
if(myEnd) return;
// Retrieve the delegate.
AsyncMethodCaller caller = (AsyncMethodCaller) ar.AsyncState; // Call EndInvoke to retrieve the results.
string returnValue = caller.EndInvoke(out threadId, ar); Console.WriteLine("The call executed on thread {0}, with return value \"{1}\".",
threadId, returnValue);
}
用法差不多吧....