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..我发你我写了一半的程序也可以 展开
. 另外我有一个通讯窗口FORM..(MainForm)
.通讯窗口 开辟子线程发送数据
SerialPort.SendCmd= "要发送的命令";
Thread tThread = new Thread(new ThreadStart(SerialPort.Send))
SerialPort的接收方法 已绑定
当收到信息后会触发接收事件DataReceived
此时在子线程里可以 获得 读到的结果..
SerialPort.result中
这时候 怎么把读到的结果传回 FORM呢?..
匿名代理
构造一个具有返回值的线程委托。
可以详细点吗?.感谢~
感谢 西三227 ..
如果需要的话.
留下email..我发你我写了一半的程序也可以 展开
4个回答
展开全部
构造一个具有返回值的线程委托。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);
}
}
}
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);
}
}
}
展开全部
当然是果断的调用窗体的Invoke()方法啦
mainFrom.Invoke(method,pars)
第一个参数是委托,你想执行什么方法就先自己定个委托然后传过去,如果你的方法有参数的话就用第二个参数传...
如果你嫌麻烦可以直接在MainFrom中定义一个public的方法,然后mainFrom.xxxx()直接调用
mainFrom.Invoke(method,pars)
第一个参数是委托,你想执行什么方法就先自己定个委托然后传过去,如果你的方法有参数的话就用第二个参数传...
如果你嫌麻烦可以直接在MainFrom中定义一个public的方法,然后mainFrom.xxxx()直接调用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有个叫线程池的东西 存线程间的变量
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你在构造线程的时候需要把form传入。
你自己写一个线程类吧。
你自己写一个线程类吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询