I m new to vb.net and i have been working on this application to get remote machines infomration in our network. I had the code working fine till i used a back ground worker. now when it runs it pulls information but in the current user, ram, and harddrive size when i reset the fields it clears it but then comes back with the new information and the old right next to it. Its like its olding data and wont relsease it. I have tried using the dispose command and even having it create a new worker everytime it runs. Any help would be great.
The code works if i have it outside of the background worker but when i do that it locks the application up till its done pulling the information.
Sorry for the long code but i wanted to make sure you could see what i was working with code wise.
Public OSNAME As String
Public SERVICEPACK As String
Public IMAGEDATE As String
Public LASTREBOOT As String
Public PAGEFILE As String
Public DOMAINRESULT As String
Public PCMODEL As String
Public RAMTOTAL As String
Public LOGGEDINUSER As String
Public FREEDRIVESPACE As String
Public EXTDRIVE1 As String
Public EXTDRIVE2 As String
Public EXTDRIVE3 As String
Public IPADDRESS As String
Public MACADDRESS As String
Public DNSRESULT As String
Public TIMEZONE1 As String
Public VIDEORES As String
Private Sub BackgroundWorkerMachineInfo_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorkerMachineInfo.DoWork
Dim MyObjSearcher As System.Management.ManagementObjectSearcher
Dim MyColl As System.Management.ManagementObjectCollection
Dim MyObj As System.Management.ManagementObject
Dim MyConOptions As New System.Management.ConnectionOptions
With MyConOptions
.Impersonation = System.Management.ImpersonationLevel.Impersonate
.Authentication = System.Management.AuthenticationLevel.Packet
End With
Dim MyMgtScope As System.Management.ManagementScope
MyMgtScope = New System.Management.ManagementScope("\\" & strComputer & "\root\cimv2", MyConOptions)
MyMgtScope.Connect()
If MyMgtScope.IsConnected = False Then
Exit Sub
End If
Try
MyObjSearcher = New System.Management.ManagementObjectSearcher(MyMgtScope.Path.ToString, _
"Select * FROM Win32_OperatingSystem")
MyColl = MyObjSearcher.Get
For Each MyObj In MyColl
OSNAME += (MyObj("caption").ToString())
If OSNAME = "Microsoft Windows 7 Enterprise " Then
OSNAME = "Windows 7"
WIN7_UNC_Users.Visibility = ElementVisibility.Visible
UNC_CDRIVE.Visibility = ElementVisibility.Visible
UNC_HostFile.Visibility = ElementVisibility.Visible
UNC_RoamingProfile.Visibility = ElementVisibility.Visible
WIN7_UNC_Zservice.Visibility = ElementVisibility.Visible
UNC_Temp.Visibility = ElementVisibility.Visible
WINXP_UNC_DDRIVE.Visibility = ElementVisibility.Collapsed
WINXP_UNC_Users.Visibility = ElementVisibility.Collapsed
WINXP_UNC_Zservice.Visibility = ElementVisibility.Collapsed
End If
If OSNAME = "Microsoft Windows XP Professional" Then
OSNAME = "Windows XP"
WIN7_UNC_Users.Visibility = ElementVisibility.Collapsed
UNC_CDRIVE.Visibility = ElementVisibility.Visible
UNC_HostFile.Visibility = ElementVisibility.Visible
UNC_RoamingProfile.Visibility = ElementVisibility.Visible
WIN7_UNC_Zservice.Visibility = ElementVisibility.Collapsed
UNC_Temp.Visibility = ElementVisibility.Visible
WINXP_UNC_DDRIVE.Visibility = ElementVisibility.Visible
WINXP_UNC_Users.Visibility = ElementVisibility.Visible
WINXP_UNC_Zservice.Visibility = ElementVisibility.Visible
RDC_Button_Header.Visibility = ElementVisibility.Collapsed
End If
Next
Catch ex As Exception
OSNAME = "UnKnown"
End Try
Try
MyObjSearcher = New System.Management.ManagementObjectSearcher(MyMgtScope.Path.ToString, _
"Select * FROM Win32_OperatingSystem")
MyColl = MyObjSearcher.Get
For Each MyObj In MyColl
SERVICEPACK = (MyObj("servicepackmajorversion").ToString())
IMAGEDATE = ManagementDateTimeConverter.ToDateTime(CStr(MyObj("InstallDate")))
LASTREBOOT = ManagementDateTimeConverter.ToDateTime(CStr(MyObj("LastBootUpTime")))
Next
Catch ex As Exception
SERVICEPACK = "Unavailable"
IMAGEDATE = "Unavailable"
LASTREBOOT = "Unavailable"
End Try
Try
MyObjSearcher = New System.Management.ManagementObjectSearcher(MyMgtScope.Path.ToString, _
"Select * FROM Win32_PageFileUsage")
MyColl = MyObjSearcher.Get
For Each MyObj In MyColl
PAGEFILE = (MyObj("AllocatedBaseSize").ToString())
Next
Catch ex As Exception
PAGEFILE = "Unavailable"
End Try
Try
MyObjSearcher = New System.Management.ManagementObjectSearcher(MyMgtScope.Path.ToString, _
"Select * FROM Win32_ComputerSystem")
MyColl = MyObjSearcher.Get
For Each MyObj In MyColl
DOMAINRESULT = (MyObj("Domain").ToString())
PCMODEL = (MyObj("Model").ToString())
RAMTOTAL += Reformat_TB_GB_MB(MyObj("TotalPhysicalMemory").ToString())
Next
Catch ex As Exception
DOMAINRESULT = "Unavailable"
PCMODEL = "Unavailable"
RAMTOTAL = "Unavailable"
End Try
Try
MyObjSearcher = New System.Management.ManagementObjectSearcher(MyMgtScope.Path.ToString, _
"Select * FROM Win32_ComputerSystem")
MyColl = MyObjSearcher.Get
For Each MyObj In MyColl
LOGGEDINUSER += (MyObj("Username").ToString())
Next
Catch ex As Exception
LOGGEDINUSER = "No One Is Logged In"
End Try
Try
MyObjSearcher = New System.Management.ManagementObjectSearcher(MyMgtScope.Path.ToString, _
"SELECT * From Win32_LogicalDisk WHERE caption = 'C:'")
MyColl = MyObjSearcher.Get
For Each MyObj In MyColl
FREEDRIVESPACE = "C:\" & Reformat_TB_GB_MB(MyObj("Freespace").ToString())
Next
Catch ex As Exception
FREEDRIVESPACE = "No Media Connected"
End Try
Try
MyObjSearcher = New System.Management.ManagementObjectSearcher(MyMgtScope.Path.ToString, _
"SELECT * From Win32_LogicalDisk WHERE caption = 'E:' And DriveType <> 5")
MyColl = MyObjSearcher.Get
For Each MyObj In MyColl
EXTDRIVE1 = (MyObj("caption").ToString()) + " " & Reformat_TB_GB_MB(MyObj("Freespace").ToString())
Next
If EXTDRIVE1 = "" Then
EXTDRIVE1 = "No Media Connected"
End If
Catch ex As Exception
EXTDRIVE1 = "Error"
End Try
Try
MyObjSearcher = New System.Management.ManagementObjectSearcher(MyMgtScope.Path.ToString, _
"SELECT * From Win32_LogicalDisk WHERE caption = 'F:' And DriveType <> 5")
MyColl = MyObjSearcher.Get
For Each MyObj In MyColl
EXTDRIVE2 = (MyObj("caption").ToString()) + " " & Reformat_TB_GB_MB(MyObj("Freespace").ToString())
Next
If EXTDRIVE2 = "" Then
EXTDRIVE2 = "No Media Connected"
End If
Catch ex As Exception
EXTDRIVE2 = "Error"
End Try
Try
MyObjSearcher = New System.Management.ManagementObjectSearcher(MyMgtScope.Path.ToString, _
"SELECT * From Win32_LogicalDisk WHERE caption = 'F:' And DriveType <> 5")
MyColl = MyObjSearcher.Get
For Each MyObj In MyColl
EXTDRIVE3 = (MyObj("caption").ToString()) + " " & Reformat_TB_GB_MB(MyObj("Freespace").ToString())
Next
If EXTDRIVE3 = "" Then
EXTDRIVE3 = "No Media Connected"
End If
Catch ex As Exception
EXTDRIVE3 = "Error"
End Try
Try
MyObjSearcher = New System.Management.ManagementObjectSearcher(MyMgtScope.Path.ToString, _
"Select * FROM Win32_VideoController Where DeviceID = 'VideoController1'")
MyColl = MyObjSearcher.Get
For Each MyObj In MyColl
Dim VideoResHorizontal = (MyObj("CurrenthorizontalResolution").ToString())
Dim VideoResVertical = (MyObj("CurrentVerticalResolution").ToString())
VIDEORES = VideoResHorizontal + " x " & VideoResVertical
Next
Catch ex As Exception
VIDEORES = "Unavailable"
End Try
Try
MyObjSearcher = New System.Management.ManagementObjectSearcher(MyMgtScope.Path.ToString, _
"Select * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
MyColl = MyObjSearcher.Get
For Each MyObj In MyColl
If Not IsDBNull(MyObj.GetPropertyValue("IPAddress")) Then
Dim IP As Array = MyObj.GetPropertyValue("IPAddress")
For i = 0 To LBound(IP)
IPADDRESS = IP(i)
MACADDRESS = (MyObj("Macaddress").ToString())
DNSRESULT = (MyObj("DnsDomain").ToString())
Next
End If
Next
Catch ex As Exception
IPADDRESS = "Unknown"
MACADDRESS = "Unknown"
DNSRESULT = "Unknown"
End Try
Try
MyObjSearcher = New System.Management.ManagementObjectSearcher(MyMgtScope.Path.ToString, _
"Select * FROM Win32_TimeZone")
MyColl = MyObjSearcher.Get
For Each MyObj In MyColl
TIMEZONE1 = (MyObj("DayLightName").ToString())
Next
Catch ex As Exception
TIMEZONE1 = "Unavailable"
End Try
End Sub
Private Sub BackgroundWorkerMachineInfo_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorkerMachineInfo.RunWorkerCompleted
OS_Result_Machine_Table.Text = OSNAME
Service_Pack_Result_Machine_Table.Text = SERVICEPACK
Image_Date_Result_Machine_Table.Text = IMAGEDATE
Last_Reboot_Result_Machine_Table.Text = LASTREBOOT
Pagefile_Size_Result_Machine_Table.Text = PAGEFILE + " MB"
Domain_Result_Machine_Table.Text = DOMAINRESULT
PC_Model_Result_Machine_Table.Text = PCMODEL
RAM_Total_Result_Machine_Table.Text = RAMTOTAL
Loggedin_User_Result_Machine_Table.Text = LOGGEDINUSER
Free_Drive_Space_Result_Machine.Text = FREEDRIVESPACE
Ext1_Drive_Space_Result_Machine.Text = EXTDRIVE1
Ext2_Drive_Space_Result_Machine.Text = EXTDRIVE2
Ext3_Drive_Space_Result_Machine.Text = EXTDRIVE3
VideoRes_Result_Machine_Table.Text = VIDEORES
IP_Address_Result_Machine_Table.Text = IPADDRESS
MAC_Result_Machine_Table.Text = MACADDRESS
DNS_Result_Machine_Table.Text = DNSRESULT
TimeZone_Result_Machine_Table.Text = TIMEZONE1
UNC_Links_Header.Enabled = True
Machine_Name_Textbox_Header.Enabled = True
End Sub
Private Sub Stop_Button_Header_Click(sender As System.Object, e As System.EventArgs) Handles Stop_Button_Header.Click
BackgroundWorkerMachineInfo.CancelAsync()
End Sub