Foxtable(狐表)用户栏目专家坐堂 → 引发类型为“System.OutOfMemoryException”的异常。


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

主题:引发类型为“System.OutOfMemoryException”的异常。

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


加好友 发短信
等级:小狐 帖子:362 积分:3683 威望:0 精华:0 注册:2016/4/2 12:11:00
引发类型为“System.OutOfMemoryException”的异常。  发帖心情 Post By:2019/9/11 15:16:00 [只看该作者]

运行几十行后错误,再运行几十行又错误,什么原因?一共4000行

Dim dt As DataTable = DataTables("MSDS网址")
Dim iii As Integer
For Each dr As DataRow In dt.Select("_Identify is not null","化学品名称")
    dr("第六列") = iii
    If dr.IsNull("代码") = False AndAlso dr.IsNull("代码2") Then
        Dim Multi As String = dr("代码")
        If Multi <> "" Then
            Dim Values() As String
            Values = Multi.split("|")
            Dim dms As String
            For Index As  Integer = 0 To Values.Length - 1
                If dms <> "" Then
                    dms = dms & "|" & Values(Index) & "^" & Index
                Else
                    dms = dms & Values(Index) & "^" & Index
                End If
            Next
            dr("代码2") = dms
            dr("代码3") = Values.Length  - 1
        End If
    End If
    iii = iii + 1
Next
dt.Save()
MessageBox.Show("ok")

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


加好友 发短信
等级:超级版主 帖子:107680 积分:547721 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/11 15:27:00 [只看该作者]

应该不只是这种代码的原因。到命令窗口单独运行这段代码有没有问题?

systemready = false
1楼的代码
systemready = true
[此贴子已经被作者于2019/9/11 15:28:09编辑过]

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


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

还是错误


图片点击可在新窗口打开查看

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


加好友 发短信
等级:超级版主 帖子:107680 积分:547721 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/11 16:20:00 [只看该作者]

实例发上来测试一下

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


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

改成这样就没有问题。是不是字符合并的问题,太长了


Dim dt As DataTable = DataTables("MSDS网址")
Dim iii As Integer
For Each dr As DataRow In dt.Select("_Identify is not null","化学品名称")
    dr("第六列") = iii
    If dr.IsNull("代码") = False AndAlso dr.IsNull("代码2") Then
        Dim Multi As String = dr("代码")
        If Multi <> "" Then
            Dim Values() As String
            Values = Multi.split("|")
            Dim s As new StringBuilder
            For Index As  Integer = 0 To Values.Length - 1
                If Index > 0 Then
                    s.AppendLine("|" & Values(Index) & "^" & Index)
                Else
                    s.AppendLine(Values(Index) & "^" & Index)
                End If
            Next
            Dim dms As String = s.Tostring
            dms = dms.Replace(vbcrlf,"")
            dr("代码2") = dms
            dr("代码3") = Values.Length  - 1
        End If
    End If
    iii = iii + 1
    'Exit For
Next
dt.Save()
MessageBox.Show("ok")

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


加好友 发短信
等级:超级版主 帖子:107680 积分:547721 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/11 16:52:00 [只看该作者]

应该是的

 回到顶部