[c#]Synchronisation entre évenements
Salut,
j'ai un thread qui fait la tache suivante (pour simplifier):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| private void work()
{
while (true)
{
if (NewMessage)
OnMessageReceived();
}
}
protected virtual void OnMessageReceived()
{
EventHandler handler = get_next_handler();
handler(this, EventArgs.Empty);
} |
la methode get_next_handler me renvoie un delegate sur successivement les methodes suivantes:
Code:
1 2 3 4 5 6 7 8 9
| public void Handler1(object sender, EventArgs e)
{
Thread.Sleep(1000);
}
public void Handler2(object sender, EventArgs e)
{
Thread.Sleep(2000);
} |
mais voila, les deux handlers prennent du temps à s'exécuter, et bloquent la méthode OnMessageReceived... comment rendre cette méthode non-bloquante avec les contraintes suivantes:
Handler2 ne doit jamais s'exécuter pendant que Handler1 s'éxecute, et la solution ne doit pas modifier l'implémentation de Handler1 ni Handler2...
c'est possible de faire ça? je ne vois pas
merci d'avance