Hallo zusammen,
wenn man seinen LAN-Adapter auf DHCP per WMI umstellt, muss dieser Adapter deaktiviert und wieder aktiviert werden, damit dieser sich auch komplett neu konfiguriert.
Nun soll dies alles komplett im Hintergrund passieren und vor allem NACHEINANDER abgearbeitet werden.
Deswegen hatte ich mir überlegt es per Async / Await zu verwirklichen.
Ich habe mir schon den Thread Async, Await und Task angesehen, aber ich steige da einfach nicht durch.
Könnt ihr mir es bitte an meinem Code erklären, wo man den Await einbauen muss und wie man es anstellt, dass diese 3 Subs nach einander abarbeiten lässt? Also vielleicht eine Übergabe von dem Sub zuvor, sobald dieser fertig ist!?
Aus meiner Hauptform rufe ich per Button den Code in einem Modul auf :
Im Modul ist dann der eigentliche Code :
wenn man seinen LAN-Adapter auf DHCP per WMI umstellt, muss dieser Adapter deaktiviert und wieder aktiviert werden, damit dieser sich auch komplett neu konfiguriert.
Nun soll dies alles komplett im Hintergrund passieren und vor allem NACHEINANDER abgearbeitet werden.
Deswegen hatte ich mir überlegt es per Async / Await zu verwirklichen.
Ich habe mir schon den Thread Async, Await und Task angesehen, aber ich steige da einfach nicht durch.
Könnt ihr mir es bitte an meinem Code erklären, wo man den Await einbauen muss und wie man es anstellt, dass diese 3 Subs nach einander abarbeiten lässt? Also vielleicht eine Übergabe von dem Sub zuvor, sobald dieser fertig ist!?
Aus meiner Hauptform rufe ich per Button den Code in einem Modul auf :
Im Modul ist dann der eigentliche Code :
VB.NET-Quellcode
- Async Sub DHCP_Teil1_Umstellung()
- Dim objMC As ManagementClass = New ManagementClass("Win32_NetworkAdapterConfiguration")
- Dim objMOC As ManagementObjectCollection = objMC.GetInstances()
- For Each objMO As ManagementObject In objMOC
- If (Not CBool(objMO("IPEnabled"))) Then
- Continue For
- End If
- Try
- Dim objNewIP As ManagementBaseObject = Nothing
- Dim objSetIP As ManagementBaseObject = Nothing
- Dim objNewDNS As ManagementBaseObject = Nothing
- Dim objSetDNS As ManagementBaseObject = Nothing
- objNewIP = objMO.GetMethodParameters("EnableDHCP")
- objSetIP = objMO.InvokeMethod("EnableDHCP", Nothing, Nothing)
- objNewDNS = objMO.GetMethodParameters("SetDNSServerSearchOrder")
- objSetDNS = objMO.InvokeMethod("SetDNSServerSearchOrder", Nothing, Nothing)
- SetDNSAutomatically((objMO.GetPropertyValue("settingID").ToString))
- Catch ex As Exception
- MessageBox.Show("Settings unchanged : " & ex.Message)
- End Try
- Next objMO
- End Sub
- Public Sub SetDNSAutomatically(ByVal settingID As String)
- Const conKeyPath = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces"
- If settingID = String.Empty Then
- Throw New ArgumentNullException("settingID")
- End If
- Dim _adapterKeyPath = String.Format("{0}\{1}", conKeyPath, settingID)
- My.Computer.Registry.SetValue(_adapterKeyPath, "NameServer", String.Empty)
- End Sub
- Async Sub DHCP_Teil2_Off()
- Dim Deaktivieren As New Process()
- Deaktivieren.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
- Deaktivieren.StartInfo.FileName = "netsh"
- Deaktivieren.StartInfo.Arguments = "interface set interface name=LAN-Verbindung1 admin=DISABLE"
- Deaktivieren.Start()
- Deaktivieren.WaitForExit()
- End Sub
- Async Sub DHCP_Teil3_On()
- Dim Aktivieren As New Process()
- Aktivieren.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
- Aktivieren.StartInfo.FileName = "netsh"
- Aktivieren.StartInfo.Arguments = "interface set interface name=LAN-Verbindung1 admin=ENABLE"
- Aktivieren.Start()
- Aktivieren.WaitForExit()
- End Sub