关于线程的参数、“返回值”、及线程的中止

2016-01-29 12:28 5 1 收藏

关于线程的参数、“返回值”、及线程的中止,关于线程的参数、“返回值”、及线程的中止

【 tulaoshi.com - ASP.NET 】

 

关于线程的参数(2.0)、“返回值”、及线程的中止


1.线程的参数:
有时候会想向辅助线程传递些信息,这里需要用到ParameterizedThreadStart 委托

示例:

        private void btRunThread_Click(object sender, EventArgs e)

        {

            Thread t = new Thread(new ParameterizedThreadStart(this.ThreadRun));

            t.Start(100);

        }

 

        private void ThreadRun(object o)

        {

            this.lbCompleted.Invoke((MethodInvoker)delegate { this.lbCompleted.Text = System.Convert.ToString(o); });

        }

 

2.通过代理可以大致实现类似功能,示例:

    class Program

    {

        static void Main(string[] args)

        {

            ThreadClass tc = new ThreadClass(new MyDlg(DlgMethod));

            Thread thread = new Thread(new ThreadStart(tc.ThreadRun));

            Console.WriteLine("second thread start");

            thread.Start();

            thread.Join();

            Console.WriteLine("second thread completed");

            Console.Read();       

        }


        private static void DlgMethod(int i)

        {

            Console.WriteLine("Second Thread Result:{0}", i);

        }

    }

 

    public delegate void MyDlg(int i);

 

    class ThreadClass

    {

        private MyDlg myDlg;

 

        public ThreadClass(MyDlg pDlg)

        {

            this.myDlg = pDlg;

        }

 

        public void ThreadRun()

        {

            int total = 0;

            for (int i = 0; i < 100; i++)[next]

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

            {

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

                total += i;

            }

 

            if (myDlg != null)

            {

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

                myDlg(total);

            }

        }

来源:http://www.tulaoshi.com/n/20160129/1486270.html

延伸阅读
标签: Web开发
       今天有位朋友问我如何在Data Access Application Block中得到存储的过程的返回值,我才发现自己以前写的文章中确实没提到这方面的问题,现在来补充一下,具体的解决方法如下: 1、首先建立一个具有返回值的存储过程,作为示例,我就简单的建一个存储过程,如下: create proc test ( &n...
标签: Web开发
客户端文件,请修改文件名为:test_2.htm html body xmlhttp异步的例子: URL: input name=a type=textbox value="test_s.asp" style="width:600px" input onclick= "getXML()" type= "button" value= "得到源代码" input name=geti type=textbox value="10000" input onclick= "if(xh && xh.responseText) {alert(xh.responseT...
服务器程序利用线程技术响应客户请求已经司空见惯,可能您认为这样做效率已经很高,但您有没有想过优化一下使用线程的方法。该文章将向您介绍服务器程序如何利用线程池来优化性能并提供一个简单的线程池实现。 线程池的技术背景 在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。...
大家都知道,在开发过程中应该尽可能减少用户等待时间,让程序尽可能快的完成运算。可是无论是哪种语言开发的程序最终往往转换成汇编语言进而解释成机器码来执行。但是机器码是按顺序执行的,一个复杂的多步操作只能一步步按顺序逐个执行。改变这种状况可以从两个角度出发:对于单核处理器,可以将多个步骤放到不同的线程,这样一来用户完成UI...
第 3 部分 内容: 条件变量 pthread_cond_wait() 小测验 初始化和清除 等待 发送信号和广播 工作组 队列 data_control 代码 调试时间 工作组代码 代码初排 有关清除的注重事项 创建工作 threadfunc() join_threads() 结束语 参考资...

经验教程

627

收藏

15
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部