private static void ClassHierarchyTest() { Console.WriteLine("Class hierarchy test..."); //create an event Console.WriteLine("\tCreate new event"); MySafeEventHandle sh = Kernel32.CreateEvent(IntPtr.Zero, true, false, null); Assert.IsFalse(sh.IsInvalid, "CreateEvent returned an invalid SafeHandle!"); Assert.IsTrue(Kernel32.SetEvent(sh), "SetEvent failed on a SafeHandle!"); Console.WriteLine("\tFirst test: Call dispose on sh"); sh.Dispose(); Console.WriteLine("\tCall succeeded.\n"); // Now create another event and force the critical finalizer to run. Console.WriteLine("\tCreate new event"); sh = Kernel32.CreateEvent(IntPtr.Zero, false, true, null); Assert.IsFalse(sh.IsInvalid, "CreateEvent returned an invalid SafeHandle!"); Console.WriteLine("\tSecond test: Force critical finalizer to run"); sh = null; GC.Collect(); GC.WaitForPendingFinalizers(); Console.WriteLine("\tSucceeded.\n"); }
public static extern bool SetEvent(MySafeEventHandle handle);
internal static extern bool SetEvent(MySafeEventHandle handle);