vb 如何处理运行后没有响应问题
来源:百度知道 编辑:UC知道 时间:2024/09/20 03:05:03
主要问题是在远程拷贝过程,因为在执行过程中,有些文件需要从公司总部的服务器上读出来,在读的过程中,消耗大量时间。就是在拷贝期间出的问题。我用调用dos的拷贝方法,就没有问题,但是需要开一个dos窗口,不喜欢,用vb拷贝就出现没有响应的问题。
单步跟一下,
如果是你在调用某个DLL的某个方法的时候,DLL本身长时间没有返回,那么没有办法,因为不是你的问题,而是DLL本身的问题.
如果是DLL很快返回了而你是在循环中不停的调用该事件,那么在循环中的适当位置加doevents来释放资源.
不知道你所谓的"vb拷贝"是什么流程,不过一般这中情况都是自己用winsock控件单写程序,传输二进制文件,收到一部分数据就写到文件中,再继续收继续写,这样在每次写完文件,就可以调用一下doevents来释放资源,保证程序不会僵死.
你的vb拷贝流程是这样的吗?
如果你觉的麻烦就应该转换一下思路,考虑就用CMD下的FTP命令直接FTP过来就行了,你应该考虑如何调用CMD的时候不显示出DOS窗口.
本来以为一个doevents能解决的,看来,你得想别的办法了
没搞过vb的这种开发,帮不了你了。
试过多线程处理没有?
不要用FileCopy函数
Private Sub MyFileCopy(ByRef Path1 As String, ByRef Path2 As String)
Const BufferLength = 1048576
Const EventsMax = 5
'可以把 1048576 换成你想要的缓冲区大小(单位:字节,1048576 字节合一兆)
'可以把 5 换成你想要的系统中待处理事件数最大值。(必须大于 5)
Dim fNum1 As Integer, fNum2 As Integer
Dim I As Long, J As Long, Temp As Long
Static IsInProcedure As Boolean
Dim bBuffer(1 To BufferLength) As Byte, ReadedBytes As Long
If IsInProcedure Then
MsgBox "中断重入!请在拷贝完成后再进行第二次拷贝!", vbCritical
Exit Sub
End