C#之参数线程

public Form1()
        {
            InitializeComponent();
        }
        Thread t;
        private void button1_Click(object sender, EventArgs e)
        {
            int num = int.Parse(this.textBox1.Text);
            int num2 = int.Parse(this.textBox2.Text);
            duo a = new duo();
            a.num1 = num;
            a.num2 = num2;
            t = new Thread(test);

            t.IsBackground = true;
            t.Start(a);

        }

        private void test(object num)
        {
            duo a = num as duo;

            //int n = 0;
            //while (n < 10000)
            //{

            //    n++;
            //    this.textBox1.Text = n.ToString();

            //}
            int n = a.num1;
            int b = a.num2;

            this.label1.Text = Convert.ToString((n + b) * b / 2);

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Control.CheckForIllegalCrossThreadCalls = false;
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {

        }
    }

  

数组

public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }
        Thread t;
        private void button1_Click(object sender, EventArgs e)
        {
            int num = int.Parse(this.textBox1.Text);
            int num2 = int.Parse(this.textBox2.Text);
            int[] a = new int[] { num,num2};
            t = new Thread(test);

            t.IsBackground = true;
            t.Start(a);

        }

        private void test(object num)
        {
            int[] nums=(int[])num;

            //int n = 0;
            //while (n < 10000)
            //{

            //    n++;
            //    this.textBox1.Text = n.ToString();

            //}
            int n = nums[0];
            int b = nums[1];

            this.label1.Text = Convert.ToString((n + b) * b / 2);

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Control.CheckForIllegalCrossThreadCalls = false;
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {

        }
    }

  

集合

public partial class Form1 : Form
    {
        List<int> add = new List<int>();

        public Form1()
        {
            InitializeComponent();
        }
        Thread t;
        private void button1_Click(object sender, EventArgs e)
        {
            add.Clear();
            int num = int.Parse(this.textBox1.Text);
            int num2 = int.Parse(this.textBox2.Text);
            add.Add(num);
            add.Add(num2);

            t = new Thread(test);

            t.IsBackground = true;
            t.Start(add);

        }

        private void test(object num)
        {
            //int nums=(int)num;
            List<int> nums = (List<int>)num;

            //int n = 0;
            //while (n < 10000)
            //{

            //    n++;
            //    this.textBox1.Text = n.ToString();

            //}
            int n = nums[0];
            int b = nums[1];

            this.label1.Text = Convert.ToString((n + b) * b / 2);

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Control.CheckForIllegalCrossThreadCalls = false;
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {

        }
    }

  

时间: 2024-10-25 04:37:48

C#之参数线程的相关文章

C#创建带参数的线程

1.无参数线程的创建 Thread thread = new Thread(new ThreadStart(ShowMessage)); thread.Start(); private void ShowMessage() { Console.WriteLine("hello world"); } 2.带一个参数的线程 使用ParameterizedThreadStart,调用 System.Threading.Thread.Start(System.Object) 重载方法时将包含数

线程锁

多线程实现方式 1.NSThread  NSOperation  GCD 一,线程的概念 程序,进程,线程 程序:一些指令的集合 进程:运行中的程序,需要占用内存空间,也是操作系统分配资源的基本单位 线程:是进程的基本组成部分,每个进程至少有一个线程   iOS应用程序默认创建了一个主线程,系统会自动维护这个线程的生命周期,如果是操作时间比较长的代码,比如:网络下载,数据库的操作,如果在主线程执行,会阻塞主线程,所有我们需要创建自己的主线程 二,为什么使用线程 三,(NSThead) 怎样创建线

线程系列02,多个线程同时处理一个耗时较长的任务以节省时间

当面对一个耗时较长的任务时,我们可以把这个任务切分成多个部分,然后同时交给多个线程处理. □ 统计字节数组一个比较耗时的方式 以下来统计一个字节数组的大小. class Program { static byte[] values = new byte[500000000]; static void Main(string[] args) { GenerateByteArray(); Console.WriteLine("正在统计字节数"); Stopwatch watch = new

多线程——创建新线程

一,简单单线程 线程是代码的执行序列或者执行路径.线程与进程的概念有一些类似,它类似于一个轻量级的进程:一个操作系统可以运行多个进程,一个进程内可以运行多个线程.每个应用程序至少运行在一个线程上.当只有一个线程时,称作单线程应用程序,该线程由系统自动创建. 下面看一个简单单线程例子: 如上图,本短程序从入口函数main进入,然后一次执行到结束. 执行main方法的线程通常被成为主线程,主线程的入口也是应用程序的起始点.对于单线程的应用程序来说,代码的执行是顺序的. 但是在多线程中,当新线程被手动

并发和Tomcat线程数

转自 http://zhanjindong.com 最近一直在解决线上一个问题,表现是: Tomcat每到凌晨会有一个高峰,峰值的并发达到了3000以上,最后的结果是Tomcat线程池满了,日志看很多请求超过了1s. 服务器性能很好,Tomcat版本是7.0.54,配置如下: <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="3000" min

[linux]进程(八)---线程概念

线程 概念:线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),进程的所有信息对该进程的所有线程是共享的,包括程序文本,程序的全部内存,堆,栈和文件描述符. 线程标识:进程ID在整个系统中是唯一的,用pid_t数据类型表示,线程ID只在它所属的进程环境中有效,用pthread_t数据类型表示,用 pthread_t pthread_self(void):来获得自身线程ID. 1 #include <stdio.h> 2 #include <st

【Swing】理解Swing中的事件与线程

talk is cheap , show me the code. Swing中的事件 事件驱动 所有的GUI程序都是事件驱动的.Swing当然也是. GUI程序不同于Command Line程序,一个很大的区别是程序执行的驱动条件:命令行程序是接受用户输入的文本参数,对命令解析,然后通过类似switch的选择来执行不同的功能模块.而GUI程 序就不一样了.GUI程序由界面元素组成,如Button,CheckBox,TextArea,等等.用户操作不同的组件,就会引发不同的事件,然后, 程序编写

聊下并发和Tomcat线程数(错误更正)

本文前半部分结论存在严重错误,请看最后2015-1-20更新部分. 最近一直在解决线上一个问题,表现是: Tomcat每到凌晨会有一个高峰,峰值的并发达到了3000以上,最后的结果是Tomcat线程池满了,日志看很多请求超过了1s. 服务器性能很好,Tomcat版本是7.0.54,配置如下: <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="3000&q

Linux线程学习(二)

一.Linux进程与线程概述 进程与线程 为什么对于大多数合作性任务,多线程比多个独立的进程更优越呢?这是因为,线程共享相同的内存空间.不同的线程可以存取内存中的同一个变量.所以,程序中的所有线程都可以读或写声明过的全局变量.如果曾用fork() 编写过重要代码,就会认识到这个工具的重要性.为什么呢?虽然fork() 允许创建多个进程,但它还会带来以下通信问题:如何让多个进程相互通信,这里每个进程都有各自独立的内存空间.对这个问题没有一个简单的答案.虽然有许多不同种类的本地IPC (进程间通信)