结束任务 和结束进程

海嵌 2005-05-13 10:42:28
为什么程序: 客户端结束进程的方式 可以激发事件, 而结束任务不可以激发服务器端的事件!怎样避免这样的问题;
结束任务 和结束进程什么本质区别,请高手们指点谜经!
...全文
311 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
icwin 2005-05-19
  • 打赏
  • 举报
回复
up
海嵌 2005-05-19
  • 打赏
  • 举报
回复
真不知道该怎么解决这个问题,客户端 结束任务 是使得TerverSocket的 ServerSocket1ClientDisconnect事件吗?!

看来问题反映出来的确如此!

只是猜测,或许错误或者还有别的原因;
那位大虾能给出点理论上的说明,不胜感激......
minsheng2113 2005-05-18
  • 打赏
  • 举报
回复
在客户端建立连接、发送消息和断开连接出错时,会触发TerverSocket的 OnClinentError事件!
海嵌 2005-05-15
  • 打赏
  • 举报
回复
void __fastcall ServerSocket1ClientError(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
changeState(socket); //更改数据库中相对应字段的状态
ErrorCode=0;
}

void __fastcall TForm1::ServerSocket1ClientDisconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
setState(Socket);//执行操作,左后还要更改数据库字段
}

客户段正常结束当然是正确的,如果客户采取非法措施比如结束任务,表现出来没有执行changeState(socket); 如果客户端采取结束进程的方式,于是正确了!

我又没有打算在客户端程序中隐藏任务管理器里的应用程序;

急需要解决方案,如果分数不够,可以再加分......
titan_ysl 2005-05-14
  • 打赏
  • 举报
回复
一楼误导,我说怎么楼主说的现象是反的。
楼主说的 结束任务 的是程序自己关闭, 结束进程 才是系统直接把该进程给Kill了。
titan_ysl 2005-05-14
  • 打赏
  • 举报
回复
在 ServerSocket1ClientError()更改数据库中相应字段项?

客户端正常结束时 在ClientSocket1->Active=false 后 ServerSocket1ClientError()是不会出现的。

更改数据库中相应字段项应在下面的事件

void __fastcall TForm1::ServerSocket1ClientDisconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
}

或客户端在关闭前发送结束信息,服务端在
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
}
事件解析出结束信息再更改数据库。
海嵌 2005-05-14
  • 打赏
  • 举报
回复
程序是这样的,服务器端程序是在 ServerSocket1ClientError()更改数据库中相应字段项,如果客户端结束进程的话,可以正常的更改数据库中字段,同时正确显示断开与某Socket的连接;相应的,如果结束任务,只是在服务器端断开Socket的连接,并没有执行相应的更改数据库字段的操作。

郁闷!!!
titan_ysl 2005-05-14
  • 打赏
  • 举报
回复
问:束任务不可以激发服务器端的事件??

答:有的,是下面这个事件,从 Socket->RemoteHost可以得到出错的主机名,ErrorCode=0 系统就不报错了。

void __fastcall TForm1::ServerSocket1ClientError(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{

}
//---------------------------------------------------------------------------
happyct 2005-05-13
  • 打赏
  • 举报
回复
个人理解:客户端自己结束,是由自己来控制各种资源的释放,同时也给了自己处理各种消息的机会

结束任务的是系统直接把该进程给Kill了。事先(是否会通知)该进程呢?应该不会吧。
minsheng2113 2005-05-13
  • 打赏
  • 举报
回复
up
海嵌 2005-05-13
  • 打赏
  • 举报
回复
那么应该怎么处理呢?!

自己顶顶

1,316

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧