vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Thread und Events: ???? 
Autor: Disaster
Datum: 22.08.07 14:52

Hi..

Ich versteh gar nix mehr. Ich will eine Prozedur die aufwändig ist in einem Thread starten und einen Wert der sich laufend im Thread ändert in eine Textbox schreiben.

Jetzt hab ich rumgelesen und erfahren das man sowas mit einem Event lösen kann. hab auch ein nettes Beispiel gefunden:

Code von Form1

Option Strict On
Option Explicit On
 
Public Class Form1
 
    Dim WithEvents calc As Class1
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
 
        Dim mythread As Threading.Thread
 
        calc = New Class1()
        calc.data = 123
        mythread = New Threading.Thread(AddressOf calc.method1)
        mythread.Start()
        Threading.Thread.Sleep(1000)
        Console.WriteLine(vbCrLf + "Return drücken")
        Console.ReadLine()
    End Sub
 
 
    Public Sub calc_Done(ByVal obj As Object, ByVal result As Integer) Handles _
      calc.Done
        Console.WriteLine("calc_Done: result={0}", result)
    End Sub
 
End Class
Code von Class 1

Option Strict On
Option Explicit On
 
Public Class Class1
 
    Public data As Integer
    Public result As Integer
    Public Event Done(ByVal obj As Object, ByVal result As Integer)
 
    Public Sub method1()
        result = data - 1
        RaiseEvent Done(Me, result)
    End Sub
 
End Class
Das Beispiel funktioniert . So jetzt hab mir ein kleines programm gemacht zum testen. Ist eigentlich genau das selbe, nur bei mir geht er nie in den die sub mit Handler Event.

Meine Form1

Public Class Form1
 
    Dim WithEvents test As Class1
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
 
        Dim oTest As New Class1()
        Dim myThread As System.Threading.Thread
 
        oTest.Obergrenze = 800
        myThread = New Threading.Thread(AddressOf oTest.test)
        myThread.Start()
 
    End Sub
 
    Public Sub JetztEvent(ByVal sender As Object, ByVal wert As Integer) _
      Handles test.Fertig
 
        MsgBox(wert)
 
    End Sub
 
 
End Class
Meine Class1

Public Class Class1
 
    Public Obergrenze As Integer
    Public ergebnis As Integer
    Public Event Fertig(ByVal sender As Object, ByVal wert As Integer)
 
    Public Sub test()
 
        For i As Integer = 0 To Obergrenze
            i += 1
            ergebnis = i
            RaiseEvent Fertig(Me, ergebnis)
        Next
 
    End Sub
 
End Class
So, kann mir jetzt vielleicht jemand sage, wiso das bei mir nicht geht aber in dem anderen Beispiel schon???

Bin schon am verzweifeln.

Danke
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Thread und Events: ????858Disaster22.08.07 14:52
Re: Thread und Events: ????602MarkusJ22.08.07 15:23
Re: Thread und Events: ????550Disaster22.08.07 15:35
Re: Thread und Events: ????531Disaster23.08.07 09:58
Re: Thread und Events: ????506ModeratorFZelle23.08.07 10:52
Re: Thread und Events: ????540Disaster23.08.07 11:24
Re: Thread und Events: ????614Disaster23.08.07 14:00
Re: Thread und Events: ????534MarkusJ23.08.07 15:44

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel