WEB开发网
开发学院软件开发C语言 异步调用与线程(总结篇) 阅读

异步调用与线程(总结篇)

 2010-09-30 21:07:06 来源:WEB开发网   
核心提示: 输出结果:main子线程0子线程2子线程3从输出结果我们 可以看到 ,新线程的执行,异步调用与线程(总结篇)(4),不会阻塞主线程, 我们可以通过 Abort()方法结束线程,看下面的代码: voidAdd(intq){for(inti=0;i<q;i++){//输出当前执行操作的线程名D

输出结果:

        main
        子线程0
        子线程2
        子线程3

从输出结果我们 可以看到 ,新线程的执行,不会阻塞主线程。 我们可以通过 Abort()方法结束线程。这里就不给出代码了。

下面说一下,带参数的线程委托,看下面的代码: 

        void Add(int q)
        {
            for (int i = 0; i < q; i++)
            {
                //输出当前执行操作的线程名
                Debug.WriteLine(Thread.CurrentThread.Name + i);
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
    
            Thread.CurrentThread.Name = "main";
            Thread t = new Thread(new ThreadStart(Add(100)));
            t.Name = "子线程";
    
            t.Start();
            Debug.WriteLine(Thread.CurrentThread.Name);
        }
        //如果你像这样 Thread t = new Thread(Add(100));传入参数的话肯定是不可能的 因为委托时不能带参数的,这里提供一种简单的解决方法,就是在线程委托中再委托的办法实现
      
  private void button1_Click(object sender, EventArgs e)
        {
            //添加当前主线程名称“main”
            Thread.CurrentThread.Name = "main";
            //在线程委托中再定义一个委托在新委托中调用方法void Add(int q)。
            Thread t = new Thread(new ThreadStart(delegate { Add(1000); }));
            t.Name = "子线程";
            //开始新线程
            t.Start();
            Debug.WriteLine(Thread.CurrentThread.Name);
        }

上一页  1 2 3 4 5 6  下一页

Tags:异步 调用 线程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接