/// <summary> /// Return if the specified DispatcherOperation is still on the Dispatcher queue. /// </summary> /// <param name="operation">DispatcherOperation</param> /// <returns>true if the dispatcher is still enqueued. This is not thread safe</returns> public static bool IsDispatcherOperationEnqueued(DispatcherOperation operation) { // object itemObj = operation.GetType().InvokeMember("_item", BindingFlags.GetField | BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase | BindingFlags.NonPublic, null, operation, null); Type priorityItemType = itemObj.GetType(); bool value = (bool)priorityItemType.InvokeMember("IsQueued", BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase | BindingFlags.NonPublic, null, itemObj, null); //} return(value); }
/// <summary> /// Given a DispatcherOperation, retrieves the value of its "Name" property. /// This property is internal, so reflection is used. /// </summary> /// <param name="operation">DispatcherOperation</param> /// <returns>Name property of the provided DispatcherOperation</returns> public static String GetNameFromDispatcherOperation(DispatcherOperation operation) { // object nameObj = operation.GetType().InvokeMember("Name", BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase | BindingFlags.NonPublic, null, operation, null); //} return(nameObj as String); }