vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 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 - Fortgeschrittene
Re: GUI friert trotz Backgroundworker ein 
Autor: Manfred X
Datum: 27.03.12 10:52

Hallo!

Meiner Ansicht nach ist es in dem Fall nicht die GUI,
sondern die Verwendung der ToString-Methode,
die die Aktualisierung blockiert.

Ich würde empfehlen, für den Worker-Report eine geeignete Klasse zu
erstellen, und als e.Userstate-Parameter eine Instanz dieser Klasse,
Properties gefüllt mit den aktuellen Report-Daten, zu übergeben.
Option Strict On
 
Public Class WorkerState
    Public Property ProgressPIValue As Double
    Public Property ProgressPILoop As Single
    Public Property InfoText As String
End Class
 
Public Class clsThreadTest
 
    Private WithEvents WORKER As New System.ComponentModel.BackgroundWorker
 
    Public Event NewINfo(ByVal InfoNr As Integer, ByVal ws As WorkerState)
 
    Public Sub StartScan()
        Me.WORKER.WorkerReportsProgress = True
        Me.WORKER.WorkerSupportsCancellation = True
        Me.WORKER.RunWorkerAsync()
    End Sub
 
    Public Sub CancelScan()
        If Me.WORKER.IsBusy Then
            Me.WORKER.CancelAsync()
        End If
    End Sub
 
    Private Sub worker_DoWork(ByVal sender As Object, ByVal e As  _
      System.ComponentModel.DoWorkEventArgs) Handles WORKER.DoWork
 
        Dim I As Integer
        Dim j As Single
 
        Dim ws As New WorkerState
        ws.ProgressPIValue = 0
        ws.Infotext = CStr(Now) & " - Start"
        WORKER.ReportProgress(0, ws)
 
        For I = 1 To 100
 
 
            WORKER.ReportProgress(I, ws)
 
            Dim PI As Double = 0
            For j = 1 To 400
                PI = 0
                For ii As Integer = 0 To 100
                    PI += 1 / Math.Pow(16, ii) * (4 / ((8 * ii) + 1) - 2 / ((8 _
                      * ii) + 4) - 1 / ((8 * ii) + 5) - 1 / ((8 * ii) + 6))
                Next
 
                ws.InfoText = ""
                ws.ProgressPIValue = PI
                ws.ProgressPILoop = j
                WORKER.ReportProgress(I, ws)
            Next
 
            If WORKER.CancellationPending = True Then Exit For
 
        Next
 
        ws.Infotext = CStr(Now) & " - Ende"
        WORKER.ReportProgress(100, ws)
    End Sub
 
    Private Sub worker_ProgressChanged(ByVal sender As Object, ByVal e As  _
      System.ComponentModel.ProgressChangedEventArgs) Handles _
      WORKER.ProgressChanged
        RaiseEvent NewINfo(e.ProgressPercentage, CType(e.UserState, _
          WorkerState))
    End Sub
 
End Class
Verarbeitung:
  Private Sub Scan1_NewINfo(ByVal ProgressPercentage As Integer, _
      ByVal ws As BGW_Test.WorkerState) Handles Scan1.NewINfo
 
        lblinfo_loop1.Text = CStr(ProgressPercentage)
        lblinfo_loop2.Text = CStr(ws.ProgressPILoop) & ":  " & CStr( _
          ws.ProgressPIValue)
        If Not String.IsNullOrEmpty(ws.InfoText) Then
            rtblog.AppendText(ws.InfoText & vbCrLf)
        End If
    End Sub


Beitrag wurde zuletzt am 27.03.12 um 11:06:23 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
GUI friert trotz Backgroundworker ein4.813Danty25.03.12 11:34
Re: GUI friert trotz Backgroundworker ein3.593keco25.03.12 12:12
Re: GUI friert trotz Backgroundworker ein3.790Danty25.03.12 14:22
Re: GUI friert trotz Backgroundworker ein3.671keco25.03.12 15:14
Re: GUI friert trotz Backgroundworker ein3.653ModeratorDaveS25.03.12 15:25
Re: GUI friert trotz Backgroundworker ein3.650Danty25.03.12 15:50
Re: GUI friert trotz Backgroundworker ein3.539keco25.03.12 19:30
Re: GUI friert trotz Backgroundworker ein3.614Danty25.03.12 19:43
Re: GUI friert trotz Backgroundworker ein3.566keco25.03.12 19:55
Re: GUI friert trotz Backgroundworker ein3.545Danty26.03.12 22:54
Re: GUI friert trotz Backgroundworker ein3.637Manfred X27.03.12 00:01
Re: GUI friert trotz Backgroundworker ein3.574Danty27.03.12 10:12
Re: GUI friert trotz Backgroundworker ein3.493Manfred X27.03.12 10:28
Re: GUI friert trotz Backgroundworker ein3.536Preisser27.03.12 10:40
Re: GUI friert trotz Backgroundworker ein3.585Manfred X27.03.12 10:52
Re: GUI friert trotz Backgroundworker ein3.561Preisser27.03.12 11:07
Re: GUI friert trotz Backgroundworker ein3.530Manfred X27.03.12 11:12
Re: GUI friert trotz Backgroundworker ein3.510Danty27.03.12 13:53
Re: GUI friert trotz Backgroundworker ein3.503Manfred X27.03.12 14:10
Re: GUI friert trotz Backgroundworker ein3.572Danty27.03.12 14:34

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