线程操作主要用到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#带参数线程的操作相关推荐

  1. C#线程调用带参数的方法 ~

    在 .NET Framework 2.0 版中,要实现线程调用带参数的方法有两种办法. 第一种:使用ParameterizedThreadStart. 调用 System.Threading.Thre ...

  2. VC下提前注入进程的一些方法2——远线程带参数

    在前一节中介绍了通过远线程不带参数的方式提前注入进程,现在介绍种远线程携带参数的方法.(转载请指明出处) 1.2 执行注入的进程需要传信息给被注入进程 因为同样采用的是远线程注入,所以大致的思路是一样 ...

  3. C#创建带参数的线程

    1.无参数线程的创建 Thread thread = new Thread(new ThreadStart(ShowMessage)); thread.Start(); private void Sh ...

  4. c#基础,单线程,跨线程访问和线程带参数

    1 using System; 2 using System.Collections.Generic; 3 using System.Threading; 4 using System.Windows ...

  5. C# 采用系统委托的方式处理线程内操作窗体控件(转载)

    C# 采用系统委托的方式处理线程内操作窗体控件 C# / asp.net / j 2009-12-25 10:04:47 阅读138 评论0   字号:大中小 订阅 一.System.Windows. ...

  6. c# 多线程 调用带参数函数

    线程操作主要用到Thread类,他是定义在System.Threading.dll下.使用时需要添加这一个引用.该类提供给我们四个重载的构造函数(以下引自msdn). Thread (Paramete ...

  7. Go数据库线程池操作问题

    最近在使用go语言操作数据库的时候遇到个隐藏的问题,这种问题很难定位,最后经过多方测试.尝试.猜测最后才确认问题,问题是这样的: 当时我们当时用的go的gin框架做后台服务.使用mysql作为后台数据 ...

  8. 解决onclick事件调用其它带参数的函数方法无效的问题

    不解以下现象: 原始版本代码:可跳过代码直接看解决方案部分.前面的文字是在解决问题时的思考. <body> <div id="div1"><form ...

  9. ObjectDataSource未能找到带参数的非泛型方法的解决

    ObjectDataSource""未能找到带参数的非泛型方法"DelnewsClass": newsClassID, original_NewsClassid ...

最新文章

  1. 我的Linux成长路---001 Linux学习初期计划
  2. Redis:16---常用功能之(慢查询日志)
  3. 【论文理解】Learning in the Frequency Domain
  4. 【SPOJ1297】Palindrome (SA+RMQ)
  5. oracle掉电后ora 00600,ORA-00600: 内部错误代码, 参数: [kcratr1_lastbwr](转)
  6. c语言全文件操作函数,C语言文件操作函数大全
  7. Linux基础知识-文件管理
  8. webWMS开发过程记录(三)- 需求分析(略)
  9. 巧用代理猎手揪出局域网中的二级代理
  10. matlab中mapminmax()函数的用法
  11. wamp mysql使用方法_wamp使用方法【总】
  12. 【题解】[LuoguP3503]「BZOJ2086」[POI2010] Blocks
  13. 全网最详细教程整理,Python自动化操作PPT总结归纳
  14. 使用samba服务在Linux与Windows直接共享文件夹,海康威视网络摄像头录像视频存储到ubuntu服务器
  15. java around_java - 使用Spring AOP时,在单个连接点上具有参数绑定的多个Around建议会导致错误 - 堆栈内存溢出...
  16. androidpn客户端深析
  17. 版本管理工具使用总结(git,svn,hg)
  18. windows php环境搭建
  19. Deep3Dbox(3D Bounding Box Estimation Using Deep Learning and Geometry)理解
  20. 在线音乐网站的设计和搭建

热门文章

  1. socket不能bind请求的地址_深入浅出讲解:php的socket通信
  2. 上传图片并显示缩略图的最简单方法(c#)
  3. 用了10年海尔家电,青岛一音乐老师为海尔写了1首歌
  4. Confluence 6 嵌套用户组的示例
  5. 2018顺丰视觉岗笔试几个知识点
  6. 我们能用RNN写策略吗?
  7. 拦截器和过滤器的区别 -- 简单分析篇
  8. 【操作系统/OS笔记15】死锁的系统模型,死锁的处理办法,银行家算法与死锁检验算法
  9. 数码相机与计算机接口,数码相机怎么连接电脑
  10. [视频]MAC中如何单独放大文本字体