首页 > Windows开发 > 详细

c# 异步编程笔记

时间:2017-01-22 10:46:07      阅读:270      评论:0      收藏:0      [点我收藏+]

  

第一步:定义委托

第二步:根据委托的定义,创建一个方法

第三部:创建委托变量

第四部:在窗口初始化中委托变量方法

第五步:开始异步,设置回调函数

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 异步编程
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            /*第四步*/
            this.objdeleTask = new deleTask(Task1);//初始化委托的方法
            /*   或者用匿名的方法
             * this.objdeleTask = (num, ms) =>
                {
                    System.Threading.Thread.Sleep(ms);
                    return num * num;
                };*/
        }
        /*第一步*/
        public delegate int deleTask(int num, int ms);//定义委托

        /*第三步*/
        deleTask objdeleTask = null;//定义委托变量

        /// <summary>
        /// 委托任务
        /// </summary>
        /// <param name="num"></param>
        /// <param name="ms"></param>
        /// <returns></returns>
        /*第二步*/
        private int Task1(int num, int ms)
        {
            System.Threading.Thread.Sleep(ms);
            return num * num;
        }
        /// <summary>
        /// 异步结束回调函数
        /// </summary>
        /// <param name="ia"></param>
        private void CallBack(IAsyncResult ia)
        {
            int res = objdeleTask.EndInvoke(ia); //调取委托计算结果
            Console.WriteLine("i的值{0},计算结果{1}", ((int[])(ia.AsyncState))[1].ToString(), res);//ia.AsyncState是回调参数
            //  label1.Text = res.ToString();这句不调试可以使用,
        }

        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 10; i++)
            {
                object ob = new int[] { 1, i };
                /*第五步*/
                objdeleTask.BeginInvoke(i * 10, 1000, CallBack, ob);//触发十个线程,前两个是参数,之后是回调函数的方法名字,以及回调参数
                System.Threading.Thread.Sleep(200);
            }
        }

    }
}

 

c# 异步编程笔记

原文:http://www.cnblogs.com/xping2016/p/6339485.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!