引用:https://blog.csdn.net/shuaihj/article/details/41316731

一、不带参数创建Thread

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading; namespace ATest
{
class A
{
public static void Main()
{
Thread t = new Thread(new ThreadStart(A));
t.Start(); Console.Read();
} private static void A()
{
Console.WriteLine("不带参数 A!");
}
}
}

  结果显示“不带参数 A!”

二、带一个参数创建Thread

由于ParameterizedThreadStart要求参数类型必须为object,所以定义的方法B形参类型必须为object。

 using System;
using System.Collections.Generic;
using System.Text;
using System.Threading; namespace BTest
{
class B
{
public static void Main()
{
Thread t = new Thread(new ParameterizedThreadStart(B));
t.Start("B"); Console.Read();
} private static void B(object obj)
{
Console.WriteLine("带一个参数 {0}!",obj.ToString ());
}
}
}

结果显示“带一个参数 B!”

三、带多个参数创建Thread

由于Thread默认只提供了这两种构造函数,如果需要传递多个参数,可以基于第二种方法,将参数作为类的属性传给线程。

 using System;
using System.Collections.Generic;
using System.Text;
using System.Threading; namespace CTest
{
class C
{
public static void Main()
{
MyParam m = new MyParam();
m.x = ;
m.y = ; Thread t = new Thread(new ThreadStart(m.Test));
t.Start(); Console.Read();
}
} class MyParam
{
public int x, y; public void Test()
{
Console.WriteLine("x={0},y={1}", this.x, this.y);
}
}
}

结果显示“x=6,y=9”

四、利用回调函数给主线程传递参数   
   我们可以基于方法三,将回调函数作为类的一个方法传进线程,方便线程回调使用。

 using System;
using System.Collections.Generic;
using System.Text;
using System.Threading; namespace CTest
{
class C
{
public static void Main()
{
MyParam m = new MyParam();
m.x = ;
m.y = ;
m.callBack = ThreadCallBack; Thread t = new Thread(new ThreadStart(m.Test));
t.Start(); Console.Read();
}
} private void ThreadCallBack(string msg)
{
Console.WriteLine("CallBack:" + msg);
} private delegate void ThreadCallBackDelegate(string msg); class MyParam
{
public int x, y;
public ThreadCallBackDelegate callBack; public void Test()
{
callBack("x=6,y=9");
}
}
}

结果显示“CallBack:x=6,y=9”

【转载】在C#中主线程和子线程如何实现互相传递数据的更多相关文章

  1. vc中主线程等待子线程退出的方法

    VC线程同步,在子线程中等待另一子线程结束,通过WaitForSingleObject可以实现,但是如果在主线程中等待子线程结束,这个函数是无法完成要求的,因为它会造成主线程挂起,导致程序死掉.我们可 ...

  2. 在C#主线程和子线程将数据传递给对方如何实现

    在C#中主线程和子线程怎样实现互相传递数据 老帅 在C#中创建线程Thread时,能够有多种方法,而主线程和子线程之间又怎样实现互相传递数据,每种创建方法传递參数的效果是不同的,逐一看一下:  一.不 ...

  3. Android笔记(三十二) Android中线程之间的通信(四)主线程给子线程发送消息

    之前的例子都是我们在子线程(WorkerThread)当中处理并发送消息,然后在主线程(UI线程)中获取消息并修改UI,那么可以不可以在由主线程发送消息,子线程接收呢?我们按照之前的思路写一下代码: ...

  4. Java主线程等待子线程、线程池

    public class TestThread extends Thread { public void run() { System.out.println(this.getName() + &qu ...

  5. Android线程之主线程向子线程发送消息

    和大家一起探讨Android线程已经有些日子了,谈的最多的就是如何把子线程中的数据发送给主线程进行处理,进行UI界面的更新,为什么要这样,请查阅之前的随笔.本篇我们就来讨论一下关于主线程向子线程如何发 ...

  6. (转)C#/.NET主线程与子线程之间的关系

    一般 一个应用程序就对应一个进程,一个进程可有一个或多个线程,而一般有一个主线程.       有的博客上说“至少一个主线程”,这一说法持有怀疑         主线程与子线程之间的关系        ...

  7. Handler详解系列(四)——利用Handler在主线程与子线程之间互发消息,handler详解

    MainActivity如下: package cc.c; import android.app.Activity; import android.os.Bundle; import android. ...

  8. C#主线程等待子线程运行结束

    佐左佑右 原文 C#主线程等待子线程运行结束 由于主程序中调用matlab的dll文件进行计算要用较长的时间,主界面会有很长时间的卡顿,造成的用户感受十分不好,因此我想在调用时,将调用放入子线程中,然 ...

  9. Handler具体解释系列(四)——利用Handler在主线程与子线程之间互发消息

    MainActivity例如以下: package cc.c; import android.app.Activity; import android.os.Bundle; import androi ...

随机推荐

  1. arcgis版接合图表5.2 免费软件,支持国家2000坐标系,ArcGIS10.0,ArcGIS10.1,ArcGIS10.2都可以使用

    下载地址:http://files.cnblogs.com/gisoracle/jionmap52.rar 1.      国家2000,西安80,北京54.坐标系的接合图表生成.根据经纬度范围,坐标 ...

  2. SpannableString与SpannableStringBuilder使用

    转自:http://blog.it985.com/14433.html1.SpannableString.SpannableStringBuilder与String的关系 首先SpannableStr ...

  3. 触摸事件MotionEvent

    触摸事件MotionEvent在用户交互中,占着非常重要的地位.首先,来看看MotionEvent中封装的一些常用的事件常量,它定义了触摸事件的不同类型. 1.单点触摸按下动作 public stat ...

  4. SQL 出现18456

    SQL Server 2008R2 18456错误解决方案   SQL Server 2008R2 18456错误解决方案 微软解释说,因密码或用户名错误而使身份验证失败并导致连接尝试被拒时,类似下面 ...

  5. tr标签是什么

    <tr> 标签定义 HTML 表格中的行. tr 元素包含一个或多个 th 或 td 元素.

  6. MySQL中AddDate函数的疑惑

    无论使用哪一种RDBMS,都需要使用到其中的一些日期转换函数,在使用MySQL的AddDate函数时,遇到了点小问题,稍作记录. root@localhost:mysql3376.sock [(non ...

  7. Java应用程序

    示例: public class HelloWorld { public static void main(String[] args) { System.out.println("Hell ...

  8. YouTube 1080P高清视频下载方法

    在国内在线视频网站还停留在1080P蓝光的时候,YouTube早已经支持4K和8K分辨率的极清视频.虽然4K和8K的清晰度比1080P高了许多档次,但是大部分人的电脑播放4K视频还是很卡的,所以目前来 ...

  9. LeetCode: Recover Binary Search Tree [099]

    [题目] Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without cha ...

  10. 【转】onConfigurationChanged

    http://blog.csdn.net/xiaodongvtion/article/details/679938 转载自该文章. 注意:onConfigurationChanged事件并不是只有屏幕 ...