c# 多线程 调用带参数函数
- 线程操作主要用到Thread类,他是定义在System.Threading.dll下。使用时需要添加这一个引用。该类提供给我们四个重载的构造函数(以下引自msdn)。
- Thread (ParameterizedThreadStart) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托。
- Thread (ThreadStart) 初始化 Thread 类的新实例。
- 由 .NET Compact Framework 支持。
- Thread (ParameterizedThreadStart, Int32) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托,并指定线程的最大堆栈大小。
- Thread (ThreadStart, Int32) 初始化 Thread 类的新实例,指定线程的最大堆栈大小。
- 由 .NET Compact Framework 支持。
- 我们如果定义不带参数的线程,可以用ThreadStart,带一个参数的用ParameterizedThreadStart。带多个参数的用另外的方法,下面逐一讲述。
- 一、不带参数的
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Threading;
- namespace AAAAAA
- {
- class AAA
- {
- public static void Main()
- {
- Thread t = new Thread(new ThreadStart(A));
- t.Start();
- Console.Read();
- }
- private static void A()
- {
- Console.WriteLine("Method A!");
- }
- }
- }
- 结果显示Method A!
- 二、带一个参数的
- 由于ParameterizedThreadStart要求参数类型必须为object,所以定义的方法B形参类型必须为object。
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Threading;
- namespace AAAAAA
- {
- class AAA
- {
- public static void Main()
- {
- Thread t = new Thread(new ParameterizedThreadStart(B));
- t.Start("B");
- Console.Read();
- }
- private static void B(object obj)
- {
- Console.WriteLine("Method {0}!",obj.ToString ());
- }
- }
- }
- 结果显示Method B!
- 三、带多个参数的
- 由于Thread默认只提供了这两种构造函数,如果需要传递多个参数,我们可以自己将参数作为类的属性。定义类的对象时候实例化这个属性,然后进行操作。
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Threading;
- namespace AAAAAA
- {
- class AAA
- {
- public static void Main()
- {
- My m = new My();
- m.x = 2;
- m.y = 3;
- Thread t = new Thread(new ThreadStart(m.C));
- t.Start();
- Console.Read();
- }
- }
- class My
- {
- public int x, y;
- public void C()
- {
- Console.WriteLine("x={0},y={1}", this.x, this.y);
- }
- }
- }
- 结果显示x=2,y=3
- 四、利用结构体给参数传值。
- 定义公用的public struct,里面可以定义自己需要的参数,然后在需要添加线程的时候,可以定义结构体的实例。
- //结构体
- struct RowCol
- {
- public int row;
- public int col;
- };
- //定义方法
- public void Output(Object rc)
- {
- RowCol rowCol = (RowCol)rc;
- for (int i = 0; i < rowCol.row; i++)
- {
- for (int j = 0; j < rowCol.col; j++)
- Console.Write("{0} ", _char);
- Console.Write("\n");
- }
- }
c# 多线程 调用带参数函数相关推荐
- ASP调用带参数存储过程的几种方式
最近有很多的朋友问到调用存储过程的问题,这里简单介绍几种ASP调用带参数存储过程的方法. 1. 这也是最简单的方法,两个输入参数,无返回值: set connection = server.creat ...
- C#线程调用带参数的方法 ~
在 .NET Framework 2.0 版中,要实现线程调用带参数的方法有两种办法. 第一种:使用ParameterizedThreadStart. 调用 System.Threading.Thre ...
- python调用带参函数_Python | 带有示例的函数调用类型
python调用带参函数 There are following types of function calls in python: python中有以下类型的函数调用: Call by value ...
- python怎么来算面积_Python实现计算长方形面积(带参数函数demo)
Python实现计算长方形面积(带参数函数demo) 如下所示: # 计算面积函数 def area(width, height): return width * height def print_w ...
- ASP调用带参数存储过程的几种方式 (转)
最近有很多的朋友问到调用存储过程的问题,这里简单介绍几种ASP调用带参数存储过程的方法. 1. 这也是最简单的方法,两个输入参数,无返回值: set connection = server.creat ...
- 使用SqlDataSource调用带参数存储过程(获取不到数据?)
最近被朋友问到一个SqlDataSource调用带参数存储过程为什么不成功,代码如下: string user_name = ((TextBox)this.DetailsView1.Rows[1].C ...
- js循环动态绑定带参数函数遇到的问题及解决方案[转]
今天写原生javascript时,想利用绑定事件实现类似jquery中on方法的功能:于是有了for循环里绑定事件,无意中发现定义类能解决好多问题! 例如:一个不确定长度的列表,在鼠标经过某一条的时候 ...
- python装饰器带参数函数_python带参数装饰器的两种写法
python带参数装饰器的两种写法 前言 最近在实现一个装饰器的过程中发现了一个很有意思的地方,在博客里面分享出来 不同的写法 三层函数嵌套,实现了可传参数的一个装饰器. import logging ...
- python装饰器带参数函数二阶导数公式_SICP Python 描述 1.6 高阶函数
1.6 高阶函数 我们已经看到,函数实际上是描述复合操作的抽象,这些操作不依赖于它们的参数值.在square中, >>> def square(x): return x * x 我们 ...
最新文章
- BZOJ 3585: mex( 离线 + 线段树 )
- a,b互换,不使用中间变量
- Windows Mobile打包时增加快捷方式到开始菜单的方法
- 检索数据_20_按照字符串数字组合的排序
- 一致性设计,而不是一致性
- LoadRunner小技巧集锦
- ref out 关键字用法与区别详解
- 关系模型的完整性约束
- 把ATmega128开发板转为Arduino
- flash CS6 导入音频不成功的问题
- 圆柱体积怎么算立方公式_圆柱体积公式是什么,怎么算,
- python定时任务启动与停止_python定时任务最强框架APScheduler详细教程
- 汽车之家和易车该如何走下去?
- 空气炸锅炸鸡腿多少度多少分钟最好(空气炸锅炸鸡腿多少度多长时间)
- 微信网页授权:网页版(一)
- CENTOS 7 YUM 安装PHP7.4
- 什么牌子的无线耳机最好?最好的蓝牙耳机排行榜
- 国庆节去哪浪?让 Python 帮你分析分析
- 回溯算法——n皇后问题
- 修改XP开机画面最简单办法(图)
热门文章
- iis7.0 https访问显示403访问被拒绝_提高网站访问性能——Tomcat优化
- 蓝牙:为啥叫“蓝”牙,不叫“白”牙?
- Linux命令中的参数,linux中一些命令以及一些参数的用法
- php获取汉字的长度,php中处理汉字字符串长度:strlen和mb_strlen
- java 置信区间_仅从均值和标准差绘制置信区间
- 华为笔记本搭载鸿蒙系统,华为MatePad Pro2入网!预装鸿蒙系统 搭载麒麟9000
- oracle insert into values select from,ORACLE语法中的INSERT INTO。。。SELECT。。。 收藏
- 计算机二级mysql报名2020_关于2020年秋季全国计算机等级考试报名的通知
- l洛谷P4779 【模板】单源最短路径(标准版)(dijkstra)
- 桶排序+基数排序+计数排序