Toon posts:

[VB.net 2.0] Threads met backgroundworker

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo programeerders

Ik ben nog niet zo lang bezig met vb.net en ik loop al paar dagen met dit probleem.. :'(

Dit is mijn probleem:
Ik heb om het simpel te houden een form met een BackGroundWorker en een Timer.
Nu wil ik de timer om de minuut de BackgroundWorker aansturen om Asynchroon zijn taak uit te voeren..Als de BackgroundWorker echter langer dan die minuut bezig is moet deze direct nadat hij klaar is weer opgestart worden..
Na een tijdje kwam ik er achter dat dit met threats opgelost kan worden maar ik kom er niet helemaal uit!! Ik krijg steeds de foutmelding dat de BackGroundWorker nog bezig is en maar één taak tegelijk kan kan uitvoeren..oftwel de WaitEvent.WaitOne() doet zijn werk niet!

Weet iemand de oplossing..alvast bedankt _/-\o_

Hier de code:

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Public Class applicatie
'Threat defineren
Dim WaitEvent As AutoResetEvent = New AutoResetEvent(False)

Public Sub New()
   'Timer aanzetten
   Timer1.Enabled = True
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If BackgroundWorker1.IsBusy Then
   WaitEvent.WaitOne() 'Wacht todat Backgroundworker klaar is
   BackgroundWorker1.RunWorkerAsync() 'Run Backgroundworker gelijk nadat hij klaar is omdat de tijd al verstreken is
   WaitEvent.Reset()
Else
   BackgroundWorker1.RunWorkerAsync() 'Run Backgroundworker omdat de tijd is verstreken en hij eerder klaar was
End If
End Sub

Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
   System.Threading.Thread.Sleep(61000) 'Simuleer een process
   WaitEvent.Set()
End Sub

End Class


PS: ik heb al heel wat gegoogled maar niets lijkt te werken ook op de help van mijn VB.NET 2005 kan ik niet echt iets vinden dat werkt. Toch heb ik het vermoeden dat het niet moeilijk is.... :?
.
.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
"Threats" zijn "bedreigingen". Ik neem aan dat je Threads bedoeld ;) (dat googled waarschijnlijk ook makkelijker ;) )
Titlefix: [vb.net 2.0] threats met backgroundworker >> [VB.net 2.0] Threads met backgroundworker

Verder heb ik, na 3 seconden googlen, een werkend voorbeeld én documentatie over de WaitOne method gevonden; wat werkt daar niet aan dan?

Verder vraag ik me af waarom je heel die if-statement gebruikt; WaitOne returned zodra de thread klaar is; waarom dan nog op IsBusy checken?

[ Voor 68% gewijzigd door RobIII op 21-10-2006 20:03 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij