J'ai un fil qui court tout le temps:L'utilisation d'un sémaphore système nommé comme un événement pour déclencher quelque chose dans un autre processus
private void DoSomeStuffThread() {
Semaphore sem = new Semaphore(0, 3, "sem_DoStuff");
sem.WaitOne();
do {
//do some stuff
} while (sem.WaitOne());
}
Je veux être en mesure d'exécuter uniquement les choses dans le bloc faire quand quelque chose d'un autre processus le dit. J'essaie d'utiliser le sémaphore du système nommé "sem_DoStuff" pour permettre cela.
Le code qui est exécuté dans mon autre processus:
public string DoStuff() {
try {
Semaphore sem = Semaphore.OpenExisting("sem_DoStuff");
sem.Release();
} catch (Exception e) {
return e.Message;
}
}
Ainsi, l'idée est que quand DoStuff est appelée, le sémaphores est libéré, et arrête DoSomeStuffThread attente, exécute ce qui est dans le bloc faire, puis attend de nouveau DoStuff avant qu'il ne soit appelé. Mais, quand DoStuff est appelé, je reçois l'exception 'Aucun descripteur du nom n'existe.'. Qu'est-ce que je fais mal?
Merci.
Les deux processus s'exécutent-ils sous le même utilisateur? pas qu'ils doivent être, juste curieux. –
Oui, ils s'exécutent tous deux sous le même utilisateur. – user363061