VB sleep

Hallo zusammen,

ich habe neulich von jemanden einen code bekommen, der mir einen shortcut (3 x Strg) ermöglicht. Leider funktioniert hier die sleep-Anwendung nicht ganz. 1x kann ich ihn ausführen dann kommt von vb ein Fehler. " Zugriff des freigegebenen Members, konstanten Members, Enumerationsmembers oder geschachtelten Typs über eine Instanz; der qualifizierende Ausdruck wird nicht ausgewertet "

Was kann man dagegen tun?

Kann mir jmd. helfen?

Code:

Public Class Form1

 Dim hklt As New Threading.Thread(AddressOf HKL)
 ' Dim hklt As New Threading.Thread(AddressOf hkl)

 Private Sub HKL()
 On Error Resume Next
 Dim hklt As New Threading.Thread(AddressOf HKL)
 Dim strg1, strg2, strg3 As Boolean

 While 1 = 1
 If My.Computer.Keyboard.CtrlKeyDown = True And strg1 = False Then
 strg1 = True
 ElseIf My.Computer.Keyboard.CtrlKeyDown = True And strg2 = False Then
 strg2 = True
 ElseIf My.Computer.Keyboard.CtrlKeyDown = True And strg3 = False Then
 strg3 = True
 End If

 If strg3 = True Then
 'Me.Show()
 MsgBox("blubb")
 strg1 = False
 strg2 = False
 strg3 = False
 End If



 hklt.Sleep(100)
 'http://www.sempervideo.de/bbpress/pm.php
 End While

 End Sub


 Private Sub Form1\_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
 hklt.Abort()
 End Sub

 Private Sub Form1\_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
 hklt.Start()
 End Sub

End Class

Grüße
dnbma

Hallo,

mir erschließt sich nicht ganz der Sinn des Quelltextes. Wozu brauchst du hier Thread.sleep? Das ist eigentlich für nebenläufige Systeme gedacht, für dessen Programmierung ich definitiv andere Sprachen (z.B. Java) vorschlage.

Hallo zusammen,

ich habe neulich von jemanden einen code bekommen, der mir
einen shortcut (3 x Strg) ermöglicht. Leider funktioniert hier
die sleep-Anwendung nicht ganz. 1x kann ich ihn ausführen dann
kommt von vb ein Fehler. " Zugriff des freigegebenen Members,
konstanten Members, Enumerationsmembers oder geschachtelten
Typs über eine Instanz; der qualifizierende Ausdruck wird
nicht ausgewertet "

Was kann man dagegen tun?

Kann mir jmd. helfen?

Public Class Form1

Dim hklt As New Threading.Thread(AddressOf HKL)
’ Dim hklt As New Threading.Thread(AddressOf hkl)

Private Sub HKL()
On Error Resume Next
Dim hklt As New Threading.Thread(AddressOf HKL)
Dim strg1, strg2, strg3 As Boolean

While 1 = 1

welchen Sinn hat diese nie terminierende while-Schleife?

If My.Computer.Keyboard.CtrlKeyDown = True And
strg1 = False Then
strg1 = True
ElseIf My.Computer.Keyboard.CtrlKeyDown = True And
strg2 = False Then
strg2 = True
ElseIf My.Computer.Keyboard.CtrlKeyDown = True And
strg3 = False Then
strg3 = True
End If

besser: Strg als int definieren und hochzählen:
if My.Computer.Keyboard.CtrlKeyDown = True then strg=strg+1
if strg=2 then
msgbox …
strg=0
end if

If strg3 = True Then
'Me.Show()
MsgBox(„blubb“)
strg1 = False
strg2 = False
strg3 = False
End If

hklt.Sleep(100)

was bewirkt die Pause? auf was wartest du? Verwende besser ein Timer-objekt, dann verlierst du die Kontrolle über den Thread nicht.

'http://www.sempervideo.de/bbpress/pm.php
End While

End Sub

Private Sub Form1_FormClosing(ByVal sender As Object,
ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles
Me.FormClosing
hklt.Abort()

Das ist unsauber programmiert: ein Programm, dass gerade geschlossen wird, versucht sich wieder selbst zu terminieren

End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
hklt.Start()

ebenso unsauber: der bereits gestartete thread startet nich erneut

End Sub

End Class

Grüße
dnbma