//////asyncDelegate asyncDelegateTask;   全局变量

        /// <summary>
        /// 申明供异步委托调用的任务回调函数,即根据任务完成情况做出响应
        /// </summary>
        /// <param name="iAsyncResult"></param>
        private void callBackAsyncDelegate(IAsyncResult iAsyncResult)
        {
            if (true)
            {
                ////while (!iar.IsCompleted)
                ////{
                ////    //这里可以执行其他代码
                ////}

                AsyncObjectStateClass asyncObjectState = (AsyncObjectStateClass)(iAsyncResult.AsyncState);//通过AsyncState获取传入的object

                AsyncResult result = (AsyncResult)iAsyncResult;

                asyncDelegate caller = (asyncDelegate)result.AsyncDelegate;                               //任务执行函数

                AsyncMethodReturnObject asyncMethodReturnObject = caller.EndInvoke(iAsyncResult);         //通过EndInvoke获取异步结果,注意每个asyncDelegate的EndInvoke只能使用一次。

                if (ShowMessageInAsyncCallbackDemo != null)
                {
                    ShowMessageInAsyncCallbackDemo(this, asyncObjectState.message);
                    ShowMessageInAsyncCallbackDemo(this, (asyncMethodReturnObject).returnObject.ToString());
                }
                else
                {
                }
            }
            else
            {
                iAsyncResult.AsyncWaitHandle.WaitOne();//等待方法调用的完成
            }
        }
        public async Task taskStartAsyncDelegate(object sleepMS)
        {
            if (true)
            {
                await Task.Run(() =>
                {
                    AsyncMethodParameterObject asyncMethodParameterObject = new AsyncMethodParameterObject(sleepMS);
                    asyncDelegate asyncDelegateTask        = new asyncDelegate(asyncMethodTask);
                    AsyncCallback asyncCallback            = new AsyncCallback(callBackAsyncDelegate);
                    AsyncObjectStateClass asyncObjectState = new AsyncObjectStateClass(sleepMS);                                                //实例化类,该对象可以传入回调函数中
                    IAsyncResult iar = (AsyncResult)asyncDelegateTask.BeginInvoke(asyncMethodParameterObject, asyncCallback, asyncObjectState); //异步执行Method,界面不会假死,后执行回调函数,弹出提示框
                });
            }
            else   //lambda形式
            {
                await Task.Run(() =>
                {
                    //回调函数callback方法可以改写成lambda形式
                    //AsyncMethodParameterObject asyncMethodParameterObject = new AsyncMethodParameterObject(sleepMS);
                    new asyncDelegate(asyncMethodTask).BeginInvoke(new AsyncMethodParameterObject(sleepMS), ar =>
                    {   //回调函数写成了lambda形式
                        // Retrieve the delegate.
                        AsyncResult result   = (AsyncResult)ar;
                        asyncDelegate caller = (asyncDelegate)result.AsyncDelegate;

                        // Retrieve the format string that was passed as state information.
                        AsyncObjectStateClass asyncObjectState = (AsyncObjectStateClass)ar.AsyncState;//通过AsyncState获取传入的object

                        // Call EndInvoke to retrieve the results.
                        AsyncMethodReturnObject asyncMethodReturnObject = caller.EndInvoke(ar);

                        //MessageBox.Show(formatString.ToString() + "\n\r" + returnValue);
                    }, new AsyncObjectStateClass("Return String"));
                });
            }
        }