2

私は持っています

try
{
    using (var eventWaitHandle = EventWaitHandle.OpenExisting(name))
    {
        eventWaitHandle.Set();
    }

    Environment.Exit(0);
}
catch(WaitHandleCannotBeOpenedException)
{
    // register new handle code goes here
}

例外をスロー/処理せずにそれを行う方法はありますか?

4

1 に答える 1

6

メソッドを使用すると、名前付きシステムイベントが存在しない場合の例外を.NET 4.5排除できるため、次のようになります。WaitHandleCannotBeOpenedExceptionTryOpenExisting()

EventWaitHandle result = null;
if (!EventWaitHandle.TryOpenExisting("eventName", out result))
{
   if (result == null)
   {
      // event was not found
   }else
   {
      // result represent a cross process WaitEvent handle
   }
}

public static bool TryOpenExisting(
                      string name,
                      out EventWaitHandle result
)

MSDN

名前付き同期イベントが存在するかどうかわからない場合は、OpenExistingメソッドオーバーロードの代わりにこのメソッドオーバーロードを使用してください。これにより、同期イベントが存在しない場合に例外がスローされます。

于 2012-03-30T13:19:51.207 に答える