Dear All,
I have an application where every minute it get updates from database and populate datagrid. So in the time of update the whole form and elements get hanged. So I have tried to now apply backgroundworker by dragging the backgroundworker component into my form together also with the progress bar component. The application is not running now and no error even in the immediate window. Below is my code. Any help please.
I have an application where every minute it get updates from database and populate datagrid. So in the time of update the whole form and elements get hanged. So I have tried to now apply backgroundworker by dragging the backgroundworker component into my form together also with the progress bar component. The application is not running now and no error even in the immediate window. Below is my code. Any help please.
VB.NET:
Imports System
Imports System.Drawing
Imports System.Collections
Imports System.ComponentModel
Imports System.Windows.Forms
Public Class Grid
Public strHTML
Private Sub Grid_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
designGrid()
End Sub
Public Sub designGrid()
dg1.AutoGenerateColumns = False
dg1.Columns.Add("Date", "Date")
dg1.Columns(0).Width = 120
dg1.Columns(0).ReadOnly = True
dg1.Columns.Add("Device ID", "Device ID")
dg1.Columns(1).Width = 50
dg1.Columns(1).ReadOnly = True
dg1.Columns.Add("Violation Type", "Violation Type")
dg1.Columns(2).Width = 100
dg1.Columns(2).ReadOnly = True
dg1.Columns.Add("Registration No.", "Regi No.")
dg1.Columns(3).Width = 60
dg1.Columns(3).ReadOnly = True
dg1.Columns.Add("Contact No.", "C No.")
dg1.Columns(4).Width = 70
dg1.Columns(4).ReadOnly = True
dg1.Columns.Add("Contact Person", "C Person")
dg1.Columns(5).Width = 100
dg1.Columns(5).ReadOnly = True
dg1.Columns.Add("Fleet Name", "Name")
dg1.Columns(6).Width = 120
dg1.Columns(6).ReadOnly = True
dg1.Columns.Add("Location", "Loc")
dg1.Columns(7).Width = 250
dg1.Columns(7).ReadOnly = True
dg1.Columns.Add("Sim Card S.No", "Sim No")
dg1.Columns(8).Width = 250
dg1.Columns(8).ReadOnly = True
dg1.Columns.Add("Trip ID", "ID")
dg1.Columns(9).Width = 50
dg1.Columns(9).ReadOnly = True
'getData()
End Sub
Public Sub getData(ByVal worker As BackgroundWorker, ByVal e As DoWorkEventArgs)
Dim strHTML As String
Dim objWC As New System.Net.WebClient()
strHTML = New System.Text.UTF8Encoding().GetString(objWC.DownloadData("http://localhost/test1/data5.php"))
'MessageBox.Show("TEST : " + strHTML)
Dim sites As Array
Dim sites2 As Array
Dim s As String
sites = strHTML.Split("^")
Dim j As Integer
j = -1
Try
For Each s In sites
j = j + 1
'counter1 = counter1 + 1
'Debug.Print(Trim(s))
sites2 = s.Split("#")
If (sites2.Length > 1) Then
Dim violationType As String
Dim violationCode As String
Dim violationString As String
Dim count As Integer
violationString = ""
violationString = Trim(sites2(11))
Dim strArr() As Char = violationString.ToCharArray()
Dim i As Integer
'MessageBox.Show("Original : " + Trim(sites2(11)))
violationCode = ""
violationString = ""
violationType = ""
For i = 0 To strArr.Length - 1
Dim modValue As Integer
modValue = i Mod 2
If modValue = 1 Then
violationCode = ""
violationCode = strArr(i - 1) + strArr(i)
End If
Next
dg1.Rows.Add(Trim(sites2(0)), Trim(sites2(3)), violationType, Trim(sites2(4)), Trim(sites2(8)), Trim(sites2(13)), Trim(sites2(2)), Trim(sites2(5)), Trim(sites2(12)), Trim(sites2(1)))
If (Trim(sites2(14)) <> "") Then
'MsgBox("TEST : " + j.ToString())
dg1.Rows(j).DefaultCellStyle.BackColor = Color.GreenYellow
End If
MessageBox.Show("LENGTH : " + sites.Length.ToString())
Dim percentComplete As Integer = CSng(j) / CSng(sites.Length) * 100
worker.ReportProgress(percentComplete)
End If
Next s
Catch ex As Exception
MessageBox.Show("cactch")
Finally
End Try
'lblStatus.Text = "Completed"
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
dg1.Rows.Clear()
'getData()
Timer1.Stop()
backgroundWorker1.RunWorkerAsync()
End Sub
Private Sub backgroundWorker1_DoWork( _
ByVal sender As Object, _
ByVal e As DoWorkEventArgs)
If backgroundWorker1.IsBusy Then
Else
' Get the BackgroundWorker object that raised this event.
Dim worker As BackgroundWorker = CType(sender, BackgroundWorker)
' Assign the result of the computation
' to the Result property of the DoWorkEventArgs
' object. This is will be available to the
' RunWorkerCompleted eventhandler.
getData(worker, e)
End If
End Sub 'backgroundWorker1_DoWork
Private Sub backgroundWorker1_RunWorkerCompleted( _
ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs)
' First, handle the case where an exception was thrown.
If (e.Error IsNot Nothing) Then
MessageBox.Show(e.Error.Message)
ElseIf e.Cancelled Then
' Next, handle the case where the user canceled the
' operation.
' Note that due to a race condition in
' the DoWork event handler, the Cancelled
' flag may not have been set, even though
' CancelAsync was called.
'resultLabel.Text = "Canceled"
Else
' Finally, handle the case where the operation succeeded.
'resultLabel.Text = e.Result.ToString()
End If
backgroundWorker1.Dispose()
'Dim backgroundWorker1 As BackgroundWorker()
Timer1.Start()
End Sub 'backgroundWorker1_RunWorkerCompleted
Private Sub backgroundWorker1_ProgressChanged( _
ByVal sender As Object, ByVal e As ProgressChangedEventArgs)
Me.progressBar1.Value = e.ProgressPercentage
End Sub
End Class