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

            return(progresschangedeventhandler.BeginInvoke(sender, e, callback, null));
        }