I have the following code
Code:Private Sub GetOtherData() If My.Settings.ScanServices Then Me.GetServices() End If End Sub Private Sub GetServices() Dim Services_worker As New System.ComponentModel.BackgroundWorker AddHandler Services_worker.DoWork, New System.ComponentModel.DoWorkEventHandler(AddressOf Me.WW.GetServices) AddHandler Services_worker.RunWorkerCompleted, _ New System.ComponentModel.RunWorkerCompletedEventHandler(AddressOf Me.ServicesWorkerCompleted) Services_worker.RunWorkerAsync() End Sub Private Sub ServicesWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Dim ServColor As Color For Each Item As ManagementBaseObject In DirectCast(e.Result, ManagementObjectCollection) If CStr(Item("State")) = "Stopped" Then ServColor = Color.Red Else ServColor = Color.Black End If MsgBox(Item("name")) lvh.AddListViewItem(Me.lv_Services, _ "ico_services", _ ServColor, _ CStr(Item("Name")), _ New String() {CStr(Item("DisplayName")), _ CStr(Item("State")), _ CStr(Item("StartMode")), _ CStr(Item("StartName")), _ CStr(Item("PathName")), _ CStr(Item("Description"))}) Next lvh.AutoSizeColumns(Me.lv_Services) lvh.ExportLV2XML(Me.lv_Services, False, "Services") Me.bln_ServicesInfo = True End Sub
I get a "Exception has been thrown by the target of an invocation."Code:Option Strict On Option Explicit On Imports System.Management Public Class WMIWrapper Public Sub GetServices(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) e.Result = Me.RunQuery("select * from Win32_Service") End Sub End Class
Is the e.result from the DoWork event passed automatically to the RunWorkerCompleted method by the BackgroundWorker? If not, how can I pass it?




Reply With Quote