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);
Beispiel #3
0
 internal static extern bool SetEvent(MySafeEventHandle handle);