1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
private object sync = new Object();//objet de synchronisation
private int i =0; //compteur sur la différence de fois où trigger() a été appelé et le nombre de tâches effectuées
public void run()
{
while(true)
{
Monitor.Enter(sync);
while (i <= 0) //un if (i==0) devrait pouvoir faire l'affaire, mais on ne sait jamais...
Monitor.Wait(sync);
dotask();
i--;
Monitor.Exit(sync);
}
}
public void trigger()
{
Monitor.Enter(sync);
i++;
Monitor.pulse(sync);
Monitor.Exit(sync);
} |
Partager