Foxtable(狐表)用户栏目专家坐堂 → 这个代码运行几个循环,程序就崩溃了,是什么原因?


  共有2935人关注过本帖树形打印复制链接

主题:这个代码运行几个循环,程序就崩溃了,是什么原因?

帅哥哟,离线,有人找我吗?
xluoping
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:368 积分:3759 威望:0 精华:0 注册:2016/4/2 12:11:00
这个代码运行几个循环,程序就崩溃了,是什么原因?  发帖心情 Post By:2023/8/9 13:44:00 [只看该作者]


这个代码运行几个循环,程序就崩溃了,是什么原因?

怎么优化?


Dim ch1 As WinForm.CheckBox = e.Form.Controls("CheckBox1")
DataTables("报告收集").LoadFilter = "_Identify is not null"
DataTables("报告收集").Load
For Each dr As DataRow In DataTables("报告收集").Select("文件名称 is not null and 识别完成 = false")
    If FileSys.FileExists(dr("文件名称")) Then
        Dim pdfFile = O2S.Components.PDFRender4NET.PDFFile.Open(dr("文件名称"))  '红色为文件路径
        dr("页数") = pdfFile.PageCount
        For i As Integer = 0 To pdfFile.PageCount - 1
            If i = 0 OrElse i > 5 AndAlso i < 20 Then
                Dim st As String = ""
                Try
                    Dim pageImage As Image = pdfFile.GetPageImage(i,300) '第一个参数1为页数,从0开始,1表示第二页;第二个参数为图片清晰度,数值越大越清晰,同时保存的图片文件也就越大
                    FileSys.CreateDirectory(SpecialFolder.DesktopDirectory & "\报告")
                    Dim jpgi As String = SpecialFolder.DesktopDirectory & "\报告\" & FileSys.GetName(dr("文件名称")).SubString(0,FileSys.GetName(dr("文件名称")).LastIndexOf(".")) & i & ".jpg"
                    pageImage.Save(jpgi)
                    pageImage.Dispose() '释放内存资源
                    Dim doc = CreateObject("MODI.Document")
                    doc.Create(jpgi)
                    doc.OCR(2052, True, True)
                    Dim layout = doc.images(0).Layout
                    st = layout.text                    
                    If st <> "" Then
                        st = st.Replace(" ","")
                        If i = 0 Then
                            dr("首页字符") = st
                        Else
                            If st <> "" AndAlso st.Contains("联系") AndAlso (st.Contains("经济类型") OrElse st.Contains("陪同") OrElse st.Contains("用人单位")) Then
                                dr("联系信息页") = st
                                Exit For
                            End If
                        End If
                    End If
                    FileSys.DeleteFile(jpgi,2,2)
                Catch ex As Exception
                End Try
                If ch1.Checked = True Then
                    Exit For
                End If
            End If
        Next
        dr("识别完成") = True
        dr.Save()
    End If
    If ch1.Checked = True Then
        Exit For
    End If
Next
MessageBox.Show("ok")

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110758 积分:563716 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/8/9 13:46:00 [只看该作者]

提示什么错误?

 回到顶部
帅哥哟,离线,有人找我吗?
xluoping
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:368 积分:3759 威望:0 精华:0 注册:2016/4/2 12:11:00
  发帖心情 Post By:2023/8/9 14:14:00 [只看该作者]

通用数据管理平台 已停止工作
由于出现问题,程序停止正常工作。windows将关闭程序,并会在有可用的解决方案时通知你。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110758 积分:563716 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/8/9 14:34:00 [只看该作者]

1、估计是第三方组件的原因。
2、处理的文件、图片太多,内存溢出

减少代码测试,比如去掉ocr部分,只导出全部图片有没有问题?

 回到顶部
帅哥哟,离线,有人找我吗?
xluoping
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:368 积分:3759 威望:0 精华:0 注册:2016/4/2 12:11:00
  发帖心情 Post By:2023/8/9 14:51:00 [只看该作者]


ocr部分是否可以像这样释放内存资源?

pageImage.Dispose() '释放内存资源

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110758 积分:563716 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/8/9 14:54:00 [只看该作者]


 回到顶部