Hoi,
ik zit met een probleem icm de thread timer in c#.
Mijn doel:
Een thread elke x seconden een functie laten uitvoeren, met de mogelijkheid om dit tijdelijk stil te zetten en later verder te gaan.
Op dit moment start ik een thread, die als callback functie een functie heeft waarin een Thread Timer wordt gestart:
Zodra ik Start() aanroep, wordt de thread gestart, gaat de timer lopen en wordt elke 'iUpdateSessionInterval' sec. in de console "update de user sessie" weggeschreven.
Wat ik nu wilde, was met sessionThread.Suspend en sessionThread.Resume, het updaten van de user sessie pauzeren.
Het probleem is nu, dat de thread zodra die timer start, zelf dood gaat. De timer thread loopt wel gewoon verder. Een thread timer heeft zelf echter geen suspend/resume. Suspenden/resumen gaat dan dus niet, want de thread is zelf al stopped.
Nu dacht ik, als ik die timer nou eens helemaal weg haal en het met Sleep doe:
Maar wanneer ik het zo doe, wordt de thread afgeknalt zodra hij Sleep aanroept. Weet iemand misschien wat ik verkeerd doe en hoe ik het wel zou moeten aanpakken?
ik zit met een probleem icm de thread timer in c#.
Mijn doel:
Een thread elke x seconden een functie laten uitvoeren, met de mogelijkheid om dit tijdelijk stil te zetten en later verder te gaan.
Op dit moment start ik een thread, die als callback functie een functie heeft waarin een Thread Timer wordt gestart:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| private void iUpdateSessionInterval = 1000;
private void Start()
{
sessionThread = new Thread(new ThreadStart(UpdateSessionCallBack));
sessionThread.Start();
}
private void UpdateSessionCallBack()
{
sessionTimer = new Timer(UpdateSession, null, iUpdateSessionInterval, iUpdateSessionInterval);
}
private void UpdateSession(Object data)
{
Debug.WriteLine("update de user sessie");
} |
Zodra ik Start() aanroep, wordt de thread gestart, gaat de timer lopen en wordt elke 'iUpdateSessionInterval' sec. in de console "update de user sessie" weggeschreven.
Wat ik nu wilde, was met sessionThread.Suspend en sessionThread.Resume, het updaten van de user sessie pauzeren.
Het probleem is nu, dat de thread zodra die timer start, zelf dood gaat. De timer thread loopt wel gewoon verder. Een thread timer heeft zelf echter geen suspend/resume. Suspenden/resumen gaat dan dus niet, want de thread is zelf al stopped.
Nu dacht ik, als ik die timer nou eens helemaal weg haal en het met Sleep doe:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| private void iUpdateSessionInterval = 1000;
private void Start()
{
sessionThread = new Thread(new ThreadStart(UpdateSession));
sessionThread.Start();
}
private void UpdateSession(Object data)
{
Debug.WriteLine("update de user sessie");
Thread.Sleep(iUpdateSessionInterval);
} |
Maar wanneer ik het zo doe, wordt de thread afgeknalt zodra hij Sleep aanroept. Weet iemand misschien wat ik verkeerd doe en hoe ik het wel zou moeten aanpakken?