Hallo,
Ik wil graag een service die een timer heeft.
Die timer moet bijvoorbeeld om de 5 seconden afgaan.
als de timer afgaat wil ik een langdurende operatie starten. Nu kan het zijn dat operatie X te lang duurt en dan wil ik de operatie aborten.
Ik dacht er dus aan om deze operatie in een aparte thread te laten lopen. Ik wil echter maar 1 thread tegelijk hebben lopen en deze op elkaar laten wachten. Dus als de timer iedere 5 seconden afgaat en de task duurt bijvoorbeeld 6 seconden wil ik dat ze als het ware gequeued worden (zoals de timer werkt als ik geen threading gebruik).
Maar om toch te kunnen aborten denk ik dat ik dit met threading moet doen. Hoe kan ik dit voor elkaar krijgen?
alvast bedankt.
ik heb nu:
De timer wordt gestart door een button click.
Als nu de timer afgaat dan krijg ik een exception dat de thread niet opnieuw gestart kan worden.Ik neem aan dat er methodes zijn om de thread opnieuw af te trappen.
Is dit wel the way to go? of moet ik toch iedere timer_tick een
Ik dacht namelijk dat er dan steeds een nieuwe thread gestart wordt en ik wil echter maar 1 thread zodat de tasks op elkaar gaan wachten.
ik hoop dat mijn bedoeling een beetje duidelijk is.
Ik wil graag een service die een timer heeft.
Die timer moet bijvoorbeeld om de 5 seconden afgaan.
als de timer afgaat wil ik een langdurende operatie starten. Nu kan het zijn dat operatie X te lang duurt en dan wil ik de operatie aborten.
Ik dacht er dus aan om deze operatie in een aparte thread te laten lopen. Ik wil echter maar 1 thread tegelijk hebben lopen en deze op elkaar laten wachten. Dus als de timer iedere 5 seconden afgaat en de task duurt bijvoorbeeld 6 seconden wil ik dat ze als het ware gequeued worden (zoals de timer werkt als ik geen threading gebruik).
Maar om toch te kunnen aborten denk ik dat ik dit met threading moet doen. Hoe kan ik dit voor elkaar krijgen?
alvast bedankt.
ik heb nu:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| public Form1() { InitializeComponent(); _myClass = new MyClassThatDoesSomethingAndHasAState(); _thread = new Thread(new ThreadStart(Run)); } private void Run() { _myClass.DoSomething(); } private void timer1_Tick(object sender, EventArgs e) { _thread.Start(); } |
De timer wordt gestart door een button click.
Als nu de timer afgaat dan krijg ik een exception dat de thread niet opnieuw gestart kan worden.Ik neem aan dat er methodes zijn om de thread opnieuw af te trappen.
Is dit wel the way to go? of moet ik toch iedere timer_tick een
C#:
1
| _thread = new Thread(new ThreadStart(Run)); |
Ik dacht namelijk dat er dan steeds een nieuwe thread gestart wordt en ik wil echter maar 1 thread zodat de tasks op elkaar gaan wachten.
ik hoop dat mijn bedoeling een beetje duidelijk is.
Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...