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
Hier de code:
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....
.
.
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
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....
.
.