Обычно я справляюсь с ошибками самостоятельно, но на этот раз мне нужна помощь экспертов!Это никогда не случалось со мной, и чем меньше данных (обычно), тем меньше вы можете сказать, что произошло.
Я пытаюсь написать простой анализатор запросов.Я случайно получаю такие сбои:
1) Я начинаю со следующей функции:
Dim thd As New Thread(AddressOf StartSub)
thd.Start()
, затем следует Startsub:
Public Sub StartSub()
CheckForIllegalCrossThreadCalls = False
txtExecution.Text = "Executing query..."
Dim query As String = QueryBuilder()
UpdateView(query)
End Sub
и затемupdateview обновляет сетку данных, которая у меня есть:
Dim da As New SqlCeDataAdapter(query, connStr)
Dim dt As New DataTable()
Try
da.Fill(dt)
txtExecution.Text = "Query executed successfully."
dgTickets.DataSource = dt
Catch ex As Exception
txtExecution.Text = "Query failed."
tbGrid.BeginInvoke(Sub() tbGrid.SelectedTab = tbGrid.TabPages(1))
End Try
2) Код падает в UpdateQuery в следующей строке (отладчик не говорит, что он падает здесь, я угадал его, выбрав все строки и пройдя по нему 11):
dgTickets.DataSource = dt
3) Что говорит отладчик: исключение NullReferenceException не обработано (...) используйте новое ключевое слово для создания экземпляра объекта
трассировка стека:
at System.Windows.Forms.DataGridViewCell.GetEditedFormattedValue(Object value, Int32 rowIndex, DataGridViewCellStyle& dataGridViewCellStyle, DataGridViewDataErrorContexts context)
at System.Windows.Forms.DataGridViewCell.PaintWork(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, Int32 rowIndex, DataGridViewElementStates cellState, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)
at System.Windows.Forms.DataGridViewRow.PaintCells(Graphics graphics, Rectangle clipBounds, Rectangle rowBounds, Int32 rowIndex, DataGridViewElementStates rowState, Boolean isFirstDisplayedRow, Boolean isLastVisibleRow, DataGridViewPaintParts paintParts)
at System.Windows.Forms.DataGridViewRow.Paint(Graphics graphics, Rectangle clipBounds, Rectangle rowBounds, Int32 rowIndex, DataGridViewElementStates rowState, Boolean isFirstDisplayedRow, Boolean isLastVisibleRow)
at System.Windows.Forms.DataGridView.PaintRows(Graphics g, Rectangle boundingRect, Rectangle clipRect, Boolean singleHorizontalBorderAdded)
at System.Windows.Forms.DataGridView.PaintGrid(Graphics g, Rectangle gridBounds, Rectangle clipRect, Boolean singleVerticalBorderAdded, Boolean singleHorizontalBorderAdded)
at System.Windows.Forms.DataGridView.OnPaint(PaintEventArgs e)
at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer)
at System.Windows.Forms.Control.WmPaint(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.DataGridView.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(ApplicationContext context)
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
at SQLquery.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81
Это довольно расплывчато на самом деле.Указанный выше файл не существует.Место, где он падает, обернуто Try-End Try.Более того, да, у меня настроено событие рисования, но оно не должно касаться его (или, может быть, это касается?).
Я был бы очень признателен за любые подсказки относительно этого.Я должен добавить, что я использую Visual Basic Express Edition.Ошибка возникает иногда - иногда, когда мне везет, ничего не происходит, а когда нет, я получаю этот сбой.
Пит.