Exemplo n.º 1
0
 static void Main(string[] args)
 {
     objCalculatorDelegate = new CalculatorDelegate(GetMulti);
     for (int i = 1; i <= 10; i++)
     {
         //4 开始发布任务并同时执行多个任务
         objCalculatorDelegate.BeginInvoke(10 * i, 1000 * i, MyCallback, i);
     }
     Console.ReadLine();
 }
Exemplo n.º 2
0
        /// <summary>
        /// 异步执行
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnTask2_Click(object sender, EventArgs e)
        {
            //3实例化委托对象 并赋值需要引用的方法
            CalculatorDelegate objCalculatorDelegate = ExecTask1;
            //1开始异步调用
            //通过委托的BeginInvoke方法进行异步调用
            //BeginInvoke是异步调用的核心
            IAsyncResult result = objCalculatorDelegate.BeginInvoke(35, null, null);

            //2并行执行其他任务
            lblResult1.Text = "正在计算,请稍等...";
            lblResult2.Text = ExecTask2(55).ToString();

            //3获取异步执行结果 借助IAsyncResult接口对象 不断查询异步调用是否结束
            //该接口对象有异步调用方法的所有参数,调用结束后取出结果作为返回值
            int r = objCalculatorDelegate.EndInvoke(result);

            lblResult1.Text = r.ToString();
        }