Добавление строк в элемент управления DataGridView вызывает сбой, но только со второй попытки - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть DataGridView (dgvNew), который заполняется файлом JSON, который находится в FileSystemWatcher, данные добавляются строка за строкой после чтения.Он отлично работает на первом файле.Но если я запускаю новый файл, копируя и вставляя тот же JSON-файл, он добавляет строки снова и снова, строка за строкой, как ожидал идентификатор, но затем вся форма падает без ошибок.

Я пробовал TRY ..CATCH с циклами WHILE для открытых файлов, которые работают с точки зрения их открытия и добавления строк, я просто не понимаю, почему это происходит сбой.Код продолжает проходить независимо, даже если форма заморожена?это связано с темой?

    Public Sub subParseJSONs(strFilePath As String, strDesiredField As String)

        Dim json As String
        Dim strMachine As String
        Dim read As New Newtonsoft.Json.Linq.JObject
        Dim booErrorJSNOArrRead As Boolean
        Dim i As Integer
        Dim dgvIndex As Integer
        Dim booOpened As Boolean
        Dim k As Integer, j As Integer

        booOpened = False
        k = 1
        j = 1
        json = Nothing



        While json Is Nothing
            Try
                j = j + 1
                If j = 10 Then
                    MessageBox.Show("J integer reached 10")
                    Exit While
                    Exit Try
                End If
                json = Replace(Replace(System.IO.File.ReadAllText(strFilePath), vbLf, ""), vbTab, "")
                read = Newtonsoft.Json.Linq.JObject.Parse(json)

            Catch ex As IOException
                'MessageBox.Show(ex.Message)
                Threading.Thread.Sleep(300)
                'GoTo EndOfSUb
            Catch ex As Exception
                'MessageBox.Show(ex.Message)
                Threading.Thread.Sleep(300)
                'GoTo EndOfSUb
            Finally
                booOpened = True

            End Try


        End While




        booErrorJSNOArrRead = False
        i = 0


        dgvNew.ColumnCount = 6
        dgvNew.Columns(0).Name = "TempID"
        dgvNew.Columns(1).Name = "DriverName"
        dgvNew.Columns(2).Name = "Seat"
        dgvNew.Columns(3).Name = "RaceTime"
        dgvNew.Columns(4).Name = "ResultTime"
        dgvNew.Columns(5).Name = "CarDriven"


        dgvNew.RefreshEdit()
        dgvNew.Refresh()

        Do Until i = read.Item("Result").Count

            If Not read.Item("Result")(i)("DriverName") = "" Then
                Dim milliseconds As Double = Convert.ToDouble(read.Item("Result")(i)("TotalTime"))
                Dim ts As TimeSpan = TimeSpan.FromMilliseconds(milliseconds)

                Dim strMMSSmmm As String = ts.Minutes.ToString & ":" & ts.Seconds.ToString & "." & ts.Milliseconds.ToString

                Dim row As String() = New String() {i + 1,
                                                read.Item("Result")(i)("DriverName"),
                                                read.Item("Result")(i)("DriverName"),
                                                strMMSSmmm,
                                                DateTime.Now, read.Item("Result")(i)("CarModel")}
                dgvNew.Rows.Add(row)

            End If

            i = i + 1

        Loop

        read = Nothing

    End Sub

Я ожидаю, что новые строки будут добавлены в конец dgvNew, что они и есть, но затем происходит сбой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...