我有一個運行所有的時間線程:使用命名的系統信號量作爲一個事件來觸發的東西在另一個進程
private void DoSomeStuffThread() {
Semaphore sem = new Semaphore(0, 3, "sem_DoStuff");
sem.WaitOne();
do {
//do some stuff
} while (sem.WaitOne());
}
我希望能夠只在做塊時,一些執行的東西來自另一個過程如此說。我試圖使用名爲「sem_DoStuff」的系統信號量來允許這種情況發生。
是被我在其他進程中執行代碼:
public string DoStuff() {
try {
Semaphore sem = Semaphore.OpenExisting("sem_DoStuff");
sem.Release();
} catch (Exception e) {
return e.Message;
}
}
所以,這個想法是,當DoStuff被調用時,信號被釋放,DoSomeStuffThread停止等待,執行的是在做塊,然後在被調用之前再次等待DoStuff。但是,當DoStuff被調用時,我得到了異常'沒有給定名稱的句柄存在'。我究竟做錯了什麼?
謝謝。
都是作爲同一用戶運行的進程?不是他們需要,只是好奇而已。 – 2010-06-11 03:56:56
是的,他們都是以同一用戶身份運行的。 – user363061 2010-06-11 03:59:17