0

用vb6制作的exe如果在服务器上连续运行会挂起吗?这个exe有winsock组件,用于从生物识别读取器接收数据并保存在sql server 2005中。实际上,这显示了对生物识别读取器进行的访问的实时列表,这意味着在这个exe中我们使用了datagrid组件,它显示了sql中保存的记录。如何刷新这个exe和数据。?

4

1 回答 1

0

好吧,如果您正在显示 GUI,那么从技术上讲,您没有在服务器上运行。但是我仍然不明白这样做会如何使程序“挂起”。

当涉及到 VB6 内存泄漏时,需要注意一些事项。一定要做的一件事是确保您使用 VB6 运行时的 SP6 版本和“扩展运行时”(VB6 附带的一组控件)。另一种可能是检查代码并寻找循环对象引用,这些引用可能会随着时间的推移而导致累积的孤立对象。还有一些模糊的 ADO 内存泄漏直到 MDAC 2.7 才得到修复,但其中大多数不会影响 VB6 程序。

我怀疑还有其他导致挂起的原因,但其中大多数可能是错误的逻辑,例如包含 DoEvents 调用的循环。在没有完全理解的情况下将 Winsock 用于 TCP 也可能生成有时似乎可以工作的程序,然后挂起等待其他时间从未发生过的事情。请记住,在每个 DataArrival 事件中,您最多只能依靠一个字节的数据——您需要编写自己的流组装和消息解析逻辑。发送方的一次 SendData 调用不等于接收方的一次 GetData 调用!

Sent:     abc
Received: a
          bc

如果程序调用 GetData 直到它得到“abc”,它将永远看不到它!

于 2009-08-16T16:25:36.783 回答