N netspur Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-12 #1 我想让程序在一个socket出错的时候自动关闭这个socket,但是我尝试在onerror事件中关闭, 结果失败,请问有什么方法吗?谢谢。
N netspur Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-13 #2 对不起,我问错问题了。应该是: 我的程序首先initializecriticalsection(cs1),然后在socket的onerror事件里执行 deletecriticalsection(cs1),但是运行的时候提示出错: Access violation at address BFF8AF1F in module 'KERNEL32.DLL'.Write of address BFF7A10E. 请问是怎么回事,如何解决?
对不起,我问错问题了。应该是: 我的程序首先initializecriticalsection(cs1),然后在socket的onerror事件里执行 deletecriticalsection(cs1),但是运行的时候提示出错: Access violation at address BFF8AF1F in module 'KERNEL32.DLL'.Write of address BFF7A10E. 请问是怎么回事,如何解决?
W wql Unregistered / Unconfirmed GUEST, unregistred user! 2004-02-17 #6 自己里面是不能关闭自己,tclientsocket和tserversocket也一样的!
Z zuping Unregistered / Unconfirmed GUEST, unregistred user! 2004-02-17 #7 可以推迟释放 定义DelSockMsg DelSockMsg=USerMsg+3 考虑在Socket.OnError事件中加入: self.Disconnect; DelSockMsg.lparam:=self; postmessage(主窗口句柄,DelSockMsg); 然后在主窗口中增加事件过程: DelSockMsgProc(var Msg) begin Tclientsocket(DelSockMsg.lparam).free; end
可以推迟释放 定义DelSockMsg DelSockMsg=USerMsg+3 考虑在Socket.OnError事件中加入: self.Disconnect; DelSockMsg.lparam:=self; postmessage(主窗口句柄,DelSockMsg); 然后在主窗口中增加事件过程: DelSockMsgProc(var Msg) begin Tclientsocket(DelSockMsg.lparam).free; end
A apw Unregistered / Unconfirmed GUEST, unregistred user! 2004-02-20 #9 问题出在你关闭Socket是在你OnError中进行,而OmnError是由Socket调用的,OnError调用完成后,还要还回Socket继续,你将它释放了,返回后Socket已被释放,自然会出错,你访问了被释放的内存空间。 只是通过异步方式处理,如同zuping。
问题出在你关闭Socket是在你OnError中进行,而OmnError是由Socket调用的,OnError调用完成后,还要还回Socket继续,你将它释放了,返回后Socket已被释放,自然会出错,你访问了被释放的内存空间。 只是通过异步方式处理,如同zuping。