C# 子线程 传值

我有个串口通讯类.专门负责收发串口数据的(SerialPort).另外我有一个通讯窗口FORM..(MainForm).通讯窗口开辟子线程发送数据SerialPort.S... 我有个串口通讯类.专门负责收发串口数据的(SerialPort)
. 另外我有一个通讯窗口FORM..(MainForm)
.通讯窗口 开辟子线程发送数据
SerialPort.SendCmd= "要发送的命令";
Thread tThread = new Thread(new ThreadStart(SerialPort.Send))

SerialPort的接收方法 已绑定
当收到信息后会触发接收事件DataReceived
此时在子线程里可以 获得 读到的结果..
SerialPort.result中
这时候 怎么把读到的结果传回 FORM呢?..
匿名代理
构造一个具有返回值的线程委托。

可以详细点吗?.感谢~

感谢 西三227 ..
如果需要的话.
留下email..我发你我写了一半的程序也可以
展开
 我来答
西三227
2010-05-06 · TA获得超过1168个赞
知道小有建树答主
回答量:473
采纳率:0%
帮助的人:342万
展开全部
构造一个具有返回值的线程委托。using System;
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);
}
}
}
百度网友217a1b5
2010-05-05 · TA获得超过360个赞
知道小有建树答主
回答量:1415
采纳率:0%
帮助的人:433万
展开全部
当然是果断的调用窗体的Invoke()方法啦
mainFrom.Invoke(method,pars)

第一个参数是委托,你想执行什么方法就先自己定个委托然后传过去,如果你的方法有参数的话就用第二个参数传...

如果你嫌麻烦可以直接在MainFrom中定义一个public的方法,然后mainFrom.xxxx()直接调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
片荒推荐
2010-05-04 · 超过17用户采纳过TA的回答
知道答主
回答量:75
采纳率:0%
帮助的人:34.9万
展开全部
有个叫线程池的东西 存线程间的变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
极天异云
2010-05-04 · TA获得超过1054个赞
知道小有建树答主
回答量:1170
采纳率:42%
帮助的人:394万
展开全部
你在构造线程的时候需要把form传入。
你自己写一个线程类吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式