Esempio n. 1
0
        /// <summary>
        /// Extends BeginInvoke so that when a state object is not needed, null does not need to be passed.
        /// <example>
        /// userpreferencechangingeventhandler.BeginInvoke(sender, e, callback);
        /// </example>
        /// </summary>
        public static IAsyncResult BeginInvoke(this UserPreferenceChangingEventHandler userpreferencechangingeventhandler, Object sender, UserPreferenceChangingEventArgs e, AsyncCallback callback)
        {
            if (userpreferencechangingeventhandler == null)
            {
                throw new ArgumentNullException("userpreferencechangingeventhandler");
            }

            return(userpreferencechangingeventhandler.BeginInvoke(sender, e, callback, null));
        }
        public void SignalsUserPreferenceEventsAsynchronouslyOnThemeChanged()
        {
            var changing = new AutoResetEvent(false);
            var changed  = new AutoResetEvent(false);

            UserPreferenceChangingEventArgs    changingArgs    = null;
            UserPreferenceChangingEventHandler changingHandler = (o, e) =>
            {
                changingArgs = e;
                changing.Set();
            };

            List <UserPreferenceChangedEventArgs> changedArgs           = new List <UserPreferenceChangedEventArgs>();
            UserPreferenceChangingEventArgs       changingDuringChanged = null;
            UserPreferenceChangedEventHandler     changedHandler        = (o, e) =>
            {
                changedArgs.Add(e);
                changingDuringChanged = changingArgs;
                // signal test to continue after two events were recieved
                if (changedArgs.Count > 1)
                {
                    changed.Set();
                }
            };

            SystemEvents.UserPreferenceChanging += changingHandler;
            SystemEvents.UserPreferenceChanged  += changedHandler;

            try
            {
                SendMessage(User32.WM_THEMECHANGED, 0, null);
                Assert.True(changing.WaitOne(PostMessageWait));
                Assert.NotNull(changingArgs);
                Assert.Equal(UserPreferenceCategory.VisualStyle, changingArgs.Category);

                Assert.True(changed.WaitOne(PostMessageWait));
                Assert.Equal(2, changedArgs.Count);
                Assert.NotNull(changedArgs[0]);
                Assert.Equal(UserPreferenceCategory.Window, changedArgs[0].Category);
                Assert.NotNull(changedArgs[1]);
                Assert.Equal(UserPreferenceCategory.VisualStyle, changedArgs[1].Category);

                // changed must follow changing for VisualStyle
                Assert.NotNull(changingDuringChanged);
                Assert.Equal(UserPreferenceCategory.VisualStyle, changingDuringChanged.Category);
            }
            finally
            {
                SystemEvents.UserPreferenceChanging -= changingHandler;
                SystemEvents.UserPreferenceChanged  -= changedHandler;
                changing.Dispose();
                changed.Dispose();
            }
        }
        public void SignalsUserPreferenceEventsSynchronouslyOnReflectedThemeChanged()
        {
            bool changing = false, changed = false;

            UserPreferenceChangingEventArgs    changingArgs = null;
            UserPreferenceChangingEventHandler changingHandler = (o, e) =>
            {
                changingArgs = e;
                changing     = true;
            };

            List <UserPreferenceChangedEventArgs> changedArgs = new List <UserPreferenceChangedEventArgs>();
            UserPreferenceChangingEventArgs       changingDuringChanged = null;
            UserPreferenceChangedEventHandler     changedHandler = (o, e) =>
            {
                changedArgs.Add(e);
                changingDuringChanged = changingArgs;
                changed = true;
            };

            SystemEvents.UserPreferenceChanging += changingHandler;
            SystemEvents.UserPreferenceChanged  += changedHandler;

            try
            {
                SendReflectedMessage(User32.WM_THEMECHANGED, 0, null);
                Assert.True(changing);
                Assert.NotNull(changingArgs);
                Assert.Equal(UserPreferenceCategory.VisualStyle, changingArgs.Category);

                Assert.True(changed);
                Assert.Equal(2, changedArgs.Count);
                Assert.NotNull(changedArgs[0]);
                Assert.Equal(UserPreferenceCategory.Window, changedArgs[0].Category);
                Assert.NotNull(changedArgs[1]);
                Assert.Equal(UserPreferenceCategory.VisualStyle, changedArgs[1].Category);

                // changed must follow changing for VisualStyle
                Assert.NotNull(changingDuringChanged);
                Assert.Equal(UserPreferenceCategory.VisualStyle, changingDuringChanged.Category);
            }
            finally
            {
                SystemEvents.UserPreferenceChanging -= changingHandler;
                SystemEvents.UserPreferenceChanged  -= changedHandler;
            }
        }
        public void SignalsUserPreferenceEventsAsynchronously(int message, int uiAction, string area, UserPreferenceCategory expectedCategory)
        {
            var changing = new AutoResetEvent(false);
            var changed  = new AutoResetEvent(false);

            UserPreferenceChangingEventArgs    changingArgs    = null;
            UserPreferenceChangingEventHandler changingHandler = (o, e) =>
            {
                changingArgs = e;
                changing.Set();
            };

            UserPreferenceChangedEventArgs    changedArgs           = null;
            UserPreferenceChangingEventArgs   changingDuringChanged = null;
            UserPreferenceChangedEventHandler changedHandler        = (o, e) =>
            {
                changedArgs           = e;
                changingDuringChanged = changingArgs;
                changed.Set();
            };

            SystemEvents.UserPreferenceChanging += changingHandler;
            SystemEvents.UserPreferenceChanged  += changedHandler;

            try
            {
                SendMessage(message, uiAction, area);
                Assert.True(changing.WaitOne(PostMessageWait));
                Assert.NotNull(changingArgs);
                Assert.Equal(expectedCategory, changingArgs.Category);

                Assert.True(changed.WaitOne(PostMessageWait));
                Assert.NotNull(changedArgs);
                Assert.Equal(expectedCategory, changedArgs.Category);

                // changed must follow changing for the same category
                Assert.NotNull(changingDuringChanged);
                Assert.Equal(expectedCategory, changingDuringChanged.Category);
            }
            finally
            {
                SystemEvents.UserPreferenceChanging -= changingHandler;
                SystemEvents.UserPreferenceChanged  -= changedHandler;
                changing.Dispose();
                changed.Dispose();
            }
        }
        public void SignalsUserPreferenceEventsSynchronously(int message, int uiAction, string area, UserPreferenceCategory expectedCategory)
        {
            bool changing = false, changed = false;

            UserPreferenceChangingEventArgs    changingArgs = null;
            UserPreferenceChangingEventHandler changingHandler = (o, e) =>
            {
                changingArgs = e;
                changing     = true;
            };

            UserPreferenceChangedEventArgs    changedArgs = null;
            UserPreferenceChangingEventArgs   changingDuringChanged = null;
            UserPreferenceChangedEventHandler changedHandler = (o, e) =>
            {
                changedArgs           = e;
                changingDuringChanged = changingArgs;
                changed = true;
            };

            SystemEvents.UserPreferenceChanging += changingHandler;
            SystemEvents.UserPreferenceChanged  += changedHandler;


            try
            {
                SendReflectedMessage(message, uiAction, area);
                Assert.True(changing);
                Assert.NotNull(changingArgs);
                Assert.Equal(expectedCategory, changingArgs.Category);

                Assert.True(changed);
                Assert.NotNull(changedArgs);
                Assert.Equal(expectedCategory, changedArgs.Category);

                // changed must follow changing for the same category
                Assert.NotNull(changingDuringChanged);
                Assert.Equal(expectedCategory, changingDuringChanged.Category);
            }
            finally
            {
                SystemEvents.UserPreferenceChanging -= changingHandler;
                SystemEvents.UserPreferenceChanged  -= changedHandler;
            }
        }
 public static void add_UserPreferenceChanging(UserPreferenceChangingEventHandler value)
 {
 }
        public static void add_UserPreferenceChanging (UserPreferenceChangingEventHandler value) {

        }