引用: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. android学习之VelocityTracker

    今天大概的学习了一下 VelocityTracker ,用来监控手势速度的,在View移动过程中,可以有个缓冲的移动.  我觉得初步的使用起来是很简单的. 首先移动依靠的是Scroller类,Scro ...

  2. requireJS基本配置相关

    requireJS: (1)实现js文件的异步加载,避免页面失去响应: (2)管理模块之间的依赖性,便于代码的编写和维护. 加载: <script src="js/require.js ...

  3. matlab练习程序(模拟退火SA)

    模拟退火首先从某个初始候选解开始,当温度大于0时执行循环. 在循环中,通过随机扰动产生一个新的解,然后求得新解和原解之间的能量差,如果差小于0,则采用新解作为当前解. 如果差大于0,则采用一个当前温度 ...

  4. VC6.0静态编译注意事项

    选择静态编译(工程->常规->Microsoft基础类->使用MFC作为静态链接库)的时候,会报错:MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: ...

  5. python加解密

    from Crypto.Cipher import AES import base64 secret_key = '1234567890123456' # 密匙 msg_text = 'test so ...

  6. java实现多文件上传01

    1.html代码 <html> <head> <link rel="stylesheet" type="text/css" hre ...

  7. Spark天堂之门解密

    本课主题 什么是 Spark 的天堂之门 Spark 天堂之门到底在那里 Spark 天堂之门源码鉴赏 引言 Spark 天堂之门就是SparkContext,这篇文章会从 SparkContext ...

  8. May 20th 2017 Week 20th Saturday

    The true nobility is in being superior to your previous self. 真正的高贵在于超越过去的自己. Every night before I w ...

  9. IOS 通讯录 (访问,添加,修改)

      如何访问用户的通讯录 在iOS中,有2个框架可以访问用户的通讯录 AddressBookUI.framework 提供了联系人列表界面.联系人详情界面.添加联系人界面等 一般用于选择联系人 Add ...

  10. 课堂练习:HTML-----------一般标签、常用标签

    []练习:一般标签.常用标签 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...