Jad*_*ias 2 .net c# concurrency ipc event-wait-handle
我有
try
{
using (var eventWaitHandle = EventWaitHandle.OpenExisting(name))
{
eventWaitHandle.Set();
}
Environment.Exit(0);
}
catch(WaitHandleCannotBeOpenedException)
{
// register new handle code goes here
}
Run Code Online (Sandbox Code Playgroud)
没有抛出/处理异常,有没有办法做到这一点?
由于使用方法不存在命名系统事件时.NET 4.5
可以消除WaitHandleCannotBeOpenedException
异常TryOpenExisting()
:
EventWaitHandle result = null;
if (!EventWaitHandle.TryOpenExisting("eventName", out result))
{
if (result == null)
{
// event was not found
}else
{
// result represent a cross process WaitEvent handle
}
}
Run Code Online (Sandbox Code Playgroud)
public static bool TryOpenExisting(
string name,
out EventWaitHandle result
)
Run Code Online (Sandbox Code Playgroud)
MSDN:
如果您不确定是否存在命名同步事件,请使用此方法重载而不是OpenExisting方法重载,如果同步事件不存在则会引发异常