线程操作主要用到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

c# 多线程 调用带参数函数的更多相关文章

  1. addEventListener调用带参数函数

    当传递参数值时,使用"匿名函数"调用带参数的函数: <body> <button id="btn">click me</butto ...

  2. 多线程调用有参数的方法---c# Thread 与 Task

    C#实现多线程的方式:Task——任务   简介 .NET 4包含新名称空间System.Threading.Tasks,它 包含的类抽象出了线程功能. 在后台使用ThreadPool. 任务表示应完 ...

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

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

  4. Java程序调用带参数的shell脚本返回值

    Java程序调用带参数的shell脚本返回值 首先来看看linux中shell变量(\(#,\)@,$0,$1,\(2)的含义解释 变量说明: -  \)$  Shell本身的PID(ProcessI ...

  5. 定时器(setTimeout/setInterval)调用带参函数失效解决方法

    也许你曾碰到过这样的问题,不管是setInterval()还是setTimeout(),当code参数里放一个带参函数时,定时器都会失效,看下面这个例子: function test(str){ al ...

  6. Python中,关于调用带参函数,一些需要注意的问题(监听时)

    1.如果监听调用的函数不带参数(start()) Button.clicked.connect(start)) def strat(): ... 2.如果监听调用的函数带参数(start(x,y)) ...

  7. C#调用带参数的python脚本

    问题描述:使用C#调用下面的带参数的用python写的方法,并且想要获取返回值. def Quadratic_Equations(a,b,c): D=b**2-4*a*c ans=[] ans.app ...

  8. c#多线程调用有参数的方法

      Thread (ParameterizedThreadStart) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托.   Thread (ThreadStart) 初始 ...

  9. setTimeout调用带参数的函数的方法

    function test(s){    alert(s);}window.setTimeout(function(){test('str');},1000);这样就可以了...为什么是这样呢.因为s ...

随机推荐

  1. 多人操作sqlite3数据库冲突问题解决方法

    问题描述:sqlite3数据放置在某一台电脑的某个共享文件夹下,操作数据库的应用程序安装在同一局域网下的很多台电脑上,由于存在多人同时使用该应用程序,所以存在多人同时操作数据库的情况.经过测试发现,最 ...

  2. 【读书笔记《Android游戏编程之从零开始》】19.游戏开发基础(游戏音乐与音效)

    在一款游戏中,除了华丽的界面 UI 直接吸引玩家外,另外重要的就是游戏的背景音乐与音效:合适的背景音乐以及精彩的音效搭配会令整个游戏上升一个档次. 在 Android 中.常用于播放游戏背景音乐的类是 ...

  3. Rem实现自适应初体验

    第一次做移动端的页面,遇到的第一个问题就是移动端的轮播图.其实轮播图的插件有很多,但是完全满足需求的并不容易找. 需求: 1.实现基本的触屏轮播图效果 2.传入非标准比例的图片,可以自动平铺(有时候图 ...

  4. 移动web页面使用的字体的思考

    前言 记得做PC端页面的时候,字体一般设置为微软雅黑,现在做起移动端页面来了,设计师们一般都还把字体设置为微软雅黑字体,但是做出来后,测试的时候发现页面中的字体不是微软雅黑,怎么办? 后来了解到的手机 ...

  5. HDU 4122 Alice's mooncake shop --RMQ

    题意: 一个月饼店做月饼,总营业时间m小时,只能在整点做月饼,可以做无限个,不过在不同的时间做月饼的话每个月饼的花费是不一样的,假设即为cost[i],再给n个订单,即为在某个时间要多少个月饼,时间从 ...

  6. 注册其它地区Apple ID

    不同地区Apple Id需求 iPhone 最近换上了iPhone,想要下载其它国家地区的游戏,需要登录该国的Apple Id才能在itunes里下载. 下面记录一下我注册日本地区的Apple Id过 ...

  7. unix文件操作函数

    1. fopen函数 #include <stdio.h> FILE *fopen(const char *path, const char *mode) 返回:文件顺利打开后,指向该流的 ...

  8. 05SpringMvc_映射器SimpleUrlHanderMapping

    这篇文章讲的还是映射器,映射器类有两种,前一篇文章讲的是BeanNameUrlHanderMapping映射器类.今天讲的是SimpleUrlHanderMapping映射器类. 这两个映射器类有什么 ...

  9. MVC3中,在control里面三种Html代码输出形式

    MVC3中,在control里面三种Html代码输出形式:ViewData["msg"] = "<br /> Title <br />" ...

  10. ubuntu中启用ssh服务

    ssh程序分为有客户端程序openssh-client和服务端程序openssh-server.如果需要ssh登陆到别的电脑,需要安装openssh-client,该程序ubuntu是默认安装的.而如 ...