C# 为什么我的EventWaitHandle获得未授权的DaccessException?
我编写了一个可执行进程,该进程运行以下代码行:C# 为什么我的EventWaitHandle获得未授权的DaccessException?,c#,.net,events,event-wait-handle,C#,.net,Events,Event Wait Handle,我编写了一个可执行进程,该进程运行以下代码行: immediateShutdownEvent = new EventWaitHandle(false, EventResetMode.ManualReset, "Global\\immediateShutdownEvent", out createdNew, security); 我可以在这个可执行进程运行时设置这个事件,它可以正常工作,但是一旦这个可执行进程作为一个进程被终止(例如,如果您手动终止该进程,则可以从task manager中终止)
immediateShutdownEvent = new EventWaitHandle(false, EventResetMode.ManualReset, "Global\\immediateShutdownEvent", out createdNew, security);
我可以在这个可执行进程运行时设置这个事件,它可以正常工作,但是一旦这个可执行进程作为一个进程被终止(例如,如果您手动终止该进程,则可以从task manager中终止),并且我在终止该进程后立即自动重新启动该进程,我会得到一个“System.UnauthorizedAccessException:对路径'Global\immediateShutdownEvent'的访问被拒绝”,即使它在相同的系统上下文下运行。这是为什么,我该如何修复它?我通过使用OpenExisting()找到了绕过它的方法抓取WaitEventHandle…然后关闭它(如果它存在),尽管你的当前帐户需要访问权限才能删除此事件。你允许Windows有多少时间清理被杀死进程中的碎片?我有没有办法强制它清理?比如,如果它存在,我如何强制它关闭此句柄仍然存在?比如,我可以看到它在等待所有者死亡来杀死句柄…所以在重新启动时,我可以尝试打开句柄并强制它清理它…但我还不能成功地强制它。有什么想法吗?我的代码可能是错的。@HansPassant-有什么想法吗?有没有办法等待Windows清理EventWaitHandles?有多少时间e如果由于进程终止而从未对EventWaitHandle调用Close,是否需要清理它?