Vb.net 在关闭某个表单时,很难确保删除数据库中的旧记录

Vb.net 在关闭某个表单时,很难确保删除数据库中的旧记录,vb.net,network-programming,Vb.net,Network Programming,我的程序使用户可以在线与其他玩家比赛。我实现这一点的方法是使用一个大厅窗体,其中的datagridview显示名为“matches”的datatable中的所有匹配项。从他们的列表中,您可以选择一个匹配项(发送请求)或宿主一个匹配项,该匹配项将引导您进入“等待”表单并将您的匹配项插入数据库。问题是,这个数据库很快就被旧的匹配项填满了,因为我已经将其编码为删除表单关闭上的记录,但是如果进程(整个程序)从任务管理器结束,并且我在数据库中留下了一个旧的游戏,那么这不会运行。我的问题是如何确保当用户停止

我的程序使用户可以在线与其他玩家比赛。我实现这一点的方法是使用一个大厅窗体,其中的datagridview显示名为“matches”的datatable中的所有匹配项。从他们的列表中,您可以选择一个匹配项(发送请求)或宿主一个匹配项,该匹配项将引导您进入“等待”表单并将您的匹配项插入数据库。问题是,这个数据库很快就被旧的匹配项填满了,因为我已经将其编码为删除表单关闭上的记录,但是如果进程(整个程序)从任务管理器结束,并且我在数据库中留下了一个旧的游戏,那么这不会运行。我的问题是如何确保当用户停止托管时,其对应的匹配项被删除。我能想到的唯一解决方案是让服务器不断ping所有匹配项,如果它们没有响应,则将其删除。

服务器ping客户端的想法很好。但这是可以逆转的。例如,通过使用TCP连接,您可以每两分钟通过客户端将播放机的用户名或ID发送到服务器。如果播放机的客户端在两分钟内没有ping服务器,服务器可以假定播放机处于脱机状态,并删除旧的“匹配”,而不是客户端。您可以运行专用服务器,它将始终运行良好

有关TCP数据通信的更多信息,只需谷歌一下

希望这有帮助

罗迪特