vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 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
Viele BackgroundWorker starten sehr langsam 
Autor: Manni01
Datum: 26.05.09 08:49

Hallo zusammen,

ich verwende in meinem Programm 22 Backgroundworker (BGW), die in ihren Worker-Prozessen auf externe Ereignisse warten müssen. In meinem Hauptthread (UI-Thread) wird eine Klasse clsSPS erstellt, in der wiederum 22 Klassen clsStation, die jeweils einen BGW enthalten, instanziert werden. In der clsStation werden bei New() die BGW mit RunWorkerAsync() gestartet.

Das Problem:
Beim Start des Programmes starten die ersten 3-5 Instanzen von clsStation ihren BGW innerhalb von 1 Sek. Die restlichen Instanzen starten ihren BGW nacheinander in Abständen von ca. 1 Sek. Erst wenn alle BGW gestartet sind, wird das weitere Programm bearbeitet. Der Programmstart dauert daher bis zu 20 Sek. Weiß jemand was den Start der BGW so verlangsamen könnte, bzw. wie ich sie beschleunigen kann?

Vielen Dank für Eure Tipps....

Hier noch ein wenig Programmcode (schematisch):

 
Public Class frmMain
    Dim WithEvents SPS As New clsSPS("192.168.0.86")
End Class
 
Public Class clsSPS
    Dim WithEvents St01 As New clsStation()
	'Die anderen 21 Deklarationen spare ich mir mal
    Dim WithEvents St22 As New clsStation()
End Class
 
Public Class clsStation
    Dim WithEvents bgw1 As New System.ComponentModel.BackgroundWorker
 
    Public Sub New()
        Me.bgw1.WorkerReportsProgress = True
        Me.bgw1.WorkerSupportsCancellation = True
        Me.bgw1.RunWorkerAsync()
    End Sub
 
    Private Sub bgw1_DoWork(ByVal sender As Object, ByVal e As _
      System.ComponentModel.DoWorkEventArgs) Handles bgw1.DoWork
        While True
            Try
                'Nur was tun, wenn der Stationsstatus > 0 ist
                If Me.StatusVonSps > 0 Then
                'Tue so dies und das
                End If
            Catch ex As Exception
                Me.bgw1.ReportProgress(1, ex.Message)
            End Try
            'Den anderen Thread's ein bisschen Zeit geben, dann wieder von _
              vorne beginnen
            Application.DoEvents()
            Threading.Thread.Sleep(50)
        End While
    End Sub
End Class
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Viele BackgroundWorker starten sehr langsam3.448Manni0126.05.09 08:49
Re: Viele BackgroundWorker starten sehr langsam2.965ModeratorFZelle26.05.09 10:06
Re: Viele BackgroundWorker starten sehr langsam2.935Manni0126.05.09 10:26
Re: Viele BackgroundWorker starten sehr langsam2.905TobiasS26.05.09 10:10
Re: Viele BackgroundWorker starten sehr langsam2.910Manni0126.05.09 10:32
Re: Viele BackgroundWorker starten sehr langsam2.846TobiasS26.05.09 13:23

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