C# 子线程 传值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 子线程 传值相关的知识,希望对你有一定的参考价值。
我有个串口通讯类.专门负责收发串口数据的(SerialPort)
. 另外我有一个通讯窗口FORM..(MainForm)
.通讯窗口 开辟子线程发送数据
SerialPort.SendCmd= "要发送的命令";
Thread tThread = new Thread(new ThreadStart(SerialPort.Send))
SerialPort的接收方法 已绑定
当收到信息后会触发接收事件DataReceived
此时在子线程里可以 获得 读到的结果..
SerialPort.result中
这时候 怎么把读到的结果传回 FORM呢?..
匿名代理
构造一个具有返回值的线程委托。
可以详细点吗?.感谢~
感谢 西三227 ..
如果需要的话.
留下email..我发你我写了一半的程序也可以
using System.Collections.Generic;
//using System.Linq;我用的是VS2010.
using System.Text;
using System.Threading;
namespace ConsoleApplication1
class Program
static void Main(string[] args)
MyThread obj = new MyThread();
//设定线程函数参数
obj.x = 100;
obj.y = 200;
//创建线程对象
Thread th = new Thread(new ThreadStart(obj.ThreadMethod));
//启动线程
th.Start();
//主线程干其他事
th.Join(); //等待辅助线程结束
//取回线程结果
Console.Write(obj.returnValue);
class MyThread
public int x;
public int y;
public long returnValue;
public long SomeFunc(int x, int y)
long ret = 0;
//使用x和y完成一些工作
return ret;
public void ThreadMethod()
returnValue = SomeFunc(x, y);
参考技术A 当然是果断的调用窗体的Invoke()方法啦
mainFrom.Invoke(method,pars)
第一个参数是委托,你想执行什么方法就先自己定个委托然后传过去,如果你的方法有参数的话就用第二个参数传...
如果你嫌麻烦可以直接在MainFrom中定义一个public的方法,然后mainFrom.xxxx()直接调用 参考技术B 有个叫线程池的东西 存线程间的变量 参考技术C 你在构造线程的时候需要把form传入。
你自己写一个线程类吧。
java 两个子线程怎么传值线程传值
把一个子线程A 中的数组传到另一个线程B 中在B 中用的时候老是报空指针异常
参考技术A 用管道可能你不太熟悉,也可以用一个折中办法:这两个线程如果出自一个母类体生成并.start的话,可以在母类体中设置一个全局的数组变量,把母类体当成传输中介,就可以了。一定能传到。希望能对你有帮助。 参考技术B 也可以用全局变量,数据库传值,伺情况而定 参考技术C 用管道以上是关于C# 子线程 传值的主要内容,如果未能解决你的问题,请参考以下文章