以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  部分电脑运行出现闪退  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=173428)

--  作者:z769036165
--  发布时间:2021/11/29 15:43:00
--  部分电脑运行出现闪退
发布后的程序有些电脑CPU在5%以下,有部分电脑出现CPU达15%占用,内存在300M左右,CPU占用过高,就出现闪退了,这个是.net版本的问题还是哪地方存在问题呢?
--  作者:有点蓝
--  发布时间:2021/11/29 15:46:00
--  
应该是程序里出现了死循环的代码和引用。

发布一个空项目放到这些电脑测试有没有问题?

--  作者:z769036165
--  发布时间:2021/11/29 15:51:00
--  
那很奇怪,像这个要处理100行,我分开处理,如每次处理5行,就没问题,然后分20次,就正常执行完毕了,如果有死循环,那应该分开执行也会有影响啊!
--  作者:有点蓝
--  发布时间:2021/11/29 15:58:00
--  
一个简单的排除方法,去掉这个代码,发布放到这些电脑执行有没有问题?如果没有就是代码有问题,如果还有就是其它地方代码问题
--  作者:z769036165
--  发布时间:2021/12/13 13:57:00
--  
For  Each dr As DataRow In qg.DataRows    \'遍历文件夹内单号
        w = qc.Find("单号 = \'" &  dr("单号") & "\'")   \'在指定表中判断是否存在该单号
        If w IsNot Nothing Then   ’如果存在
            w("本地地址") = dr("本地位置")    \'在指定表中写入本地地址
            Dim ifo As new FileInfo(w("本地地址"))   

            If FileSys.DirectoryExists("\\\\" & ip & "\\单号文件") Then   \'如果共享文件路径存在
                If FileSys.DirectoryExists("\\\\" & ip & "\\单号文件\\" & MID(w("单号"),6,4)) Then  \'判断单号指定的年份文件夹是否存在
                    FileSys.CopyFile(w("本地地址"),"\\\\" & ip & "\\单号文件\\" & MID(w("单号"),6,4) & "\\" & w("简称") & w("单号")  & ifo.Extension,True)  ’复制本地文件到共享地址
                    w("存档状态") = "已存档"
                    w("共享地址") = "\\\\" & ip & "\\单号文件\\" & MID(w("单号"),6,4) & "\\" & w("简称") &  w("单号")  & ifo.Extension
                Else
                    FileSys.CreateDirectory("\\\\" & ip & "\\单号文件\\" & MID(w("单号"),6,4))
                    FileSys.CopyFile(w("本地地址"),"\\\\" & ip & "\\单号文件\\" & MID(w("单号"),6,4) & "\\" &  w("简称") & w("单号")  & ifo.Extension,True)
                    w("存档状态") = "已存档"
                    w("共享地址") = "\\\\" & ip & "\\单号文件\\" & MID(w("单号"),6,4) & "\\" &  w("简称") & w("单号")  & ifo.Extension
                End If
            Else
                w("存档状态") = "未存档"
            End If
        End If
    Next

这个代码出现的闪退,发现问题出现IP上面,之前定义的 Dim IP As String = "192.168.3.10" 这样不闪退
但是近期这个共享的地址存储不够了,换成另外一个地址
Dim IP As String = "192.168.3.11\\hhdh$\\管理台账 在 指定 (192.168.3.60) 上",结果发现,开始前几个单号都能正常,大概第3~4个开始就直接退了

--  作者:z769036165
--  发布时间:2021/12/13 14:03:00
--  
用MessageBox.Show排查是在这个地方的代码运行出现闪退的,主要问题是如果有异常应该弹出报错框,不应该直接闪退啊!
--  作者:有点蓝
--  发布时间:2021/12/13 14:30:00
--  
1、去掉目录里的空格和括号试试
2、关闭服务器杀毒软件试试
3、使用循环内部使用try包起来:http://www.foxtable.com/webhelp/topics/2070.htm

建议还是使用ftp管理文件,共享文件夹这种方式处理,任意产生冲突,比如A在复制文件,B在删除文件,C在打开文件

--  作者:z769036165
--  发布时间:2021/12/24 16:51:00
--  
我ip改回原来的也发现报错

Dim ip As String = "192.168.1.2"
For  Each dr As DataRow In DataTables("文件表").DataRows    \'遍历文件文件夹订单表
    w = DataTables("单号表").Find("单号 = \'" &  dr("单号") & "\'")
    If w IsNot Nothing Then
        w("状况") = "已存档"
        w("本地地址") = dr("文件位置").Replace("文件","文件\\文件历史")
        Dim ifo As new FileInfo(w("本地地址"))
        FileSys.MoveFile(dr("文件位置"),w("本地地址"),True)
        res = Functions.Execute("ftp上传",w("本地地址"),"\\文件\\2112\\" & w("单号") & ifo.Extension)
        If res = 1 Then
            w("文件存档状态") = "已存档"
            w("共享地址") = "\\\\" & ip & "\\文件\\2112\\" & w("单号") & ifo.Extension
        Else
            w("文件存档状态") = "未存档"
        End If
    End If
Next
然后我把上传改成用ftp上传了,发现如果上传1~2个文件,就正常运行,如果超过就直接闪退
我用try判断没用,不弹出错误,也是直接退
然后用MessageBox判断也不行,不弹出判断,直接退。

--  作者:有点蓝
--  发布时间:2021/12/24 17:23:00
--  
不移动文件,测试有没有问题?去掉下面代码
FileSys.MoveFile(dr("文件位置"),w("本地地址"),True)