public static int Main(string[] args) { try { // **DESTINATION** // Create watcher and completionHandler ManagementOperationWatcher delete_res = new ManagementOperationWatcher(); ManagementOperationWatcher results = new ManagementOperationWatcher(); CompletionHandler completionHandler = new CompletionHandler(); CompletionHandler completionHandler_res = new CompletionHandler(); delete_res.Completed += new CompletedEventHandler(completionHandler_res.Done); results.Completed += new CompletedEventHandler(completionHandler.Done); PutHandler putHandler = new PutHandler(); results.ObjectPut += new ObjectPutEventHandler(putHandler.JustPut); // Create the class TestDelClassasync for deletion later // **SOURCE ** ManagementClass newclassObj = new ManagementClass("root/default", "", null); newclassObj.SystemProperties["__CLASS"].Value = "TestDelClassasync"; PropertySet mykeyprop = newclassObj.Properties; mykeyprop.Add("MyKey", "Hello"); Console.WriteLine("Thread is {0}", System.Threading.Thread.CurrentThread.ApartmentState); newclassObj.Put(results); while (!completionHandler.IsComplete) { System.Threading.Thread.Sleep(1000); } completionHandler.Reset(); ManagementClass dummyClassCheck = new ManagementClass("root/default", "TestDelClassasync", null); //dummyClassCheck.Get(); Console.WriteLine(dummyClassCheck.SystemProperties["__Class"].Value.ToString()); // Delete the Class aync newclassObj.Delete(delete_res); while (!completionHandler_res.IsComplete) { System.Threading.Thread.Sleep(1000); } completionHandler_res.Reset(); if ("System.Management.ManagementOperationWatcher" == completionHandler_res.Sender) { Console.WriteLine("Test 10.2: Able to delete classes asynchronously."); } else { Console.WriteLine("Test 10.2: Unable to delete classes asynchronously."); } } catch (Exception e) { Console.WriteLine("Test 10.2: " + e.GetType().ToString()); Console.WriteLine(e.Message + e.StackTrace); } return(0); }