for (int i = 0; i <count; i++) //根据选择的串口号数量创建对应数量的线程
{
thread = new Thread(new ParameterizedThreadStart(Run));
thread.Name = Convert.ToString(i);
thread.IsBackground = true; //将线程转为后台线程
thread.Start(GetPortNames[i]); //传入串口号
}

public void Run(object serialName)
{
ConnectParams[] comm =null;
sp1 = new SerialPort();
sp1.PortName = serialName.ToString();//设置串口名
sp1.BaudRate = 19200; //波特率
sp1.DataBits = 8; //数据位
sp1.StopBits = StopBits.One;//停止位
sp1.Parity = Parity.None; //校验位
sp1.DtrEnable = true;//准备就绪
sp1.RtsEnable = true;
sp1.ReadTimeout = 1000;//设置数据读取超时为1秒
DevType = "流量计";
var cnn = new ConnectParams();
cnn.portName = sp1.PortName;
cnn.ComStarte = starte;
DataTable dt = new DataTable();
dt.Columns.Add("sp1.PortName", typeof(object));
dt.Columns.Add("ComStarte", typeof(object));
//dt.Columns.Add("SerialPort", typeof(object));
DataRow dr1 = dt.NewRow();
try
{

if (sp1.IsOpen)
{
sp1.Close();
}
sp1.Open();
if (sp1.IsOpen)
{
// starte = "打开";
dr1[0] = sp1.PortName;
dr1[1] = "打开";
//dr1[2] = sp1;
//dt.Rows.Add(dr1);
// comm = ConnectParams.GetComToDevParamsList(null, sp1.PortName, sp1.BaudRate, 0, starte);
}
//else
//{
// dr1[1] = "关闭";
// //dt.Rows.Add(dr1);
//}

}
catch (Exception ex)
{
sp1.Close();
starte = "关闭";
dt.Rows.Add(dr1);
//comm = ConnectParams.GetComToDevParamsList(null, sp1.PortName, sp1.BaudRate, 0, starte);
return;
}

this.Invoke((EventHandler)delegate
{
dt.Rows.Add(dr1);
dataGridView1.DataSource = dt;
});

}

2. 多个参数

using System;
using System.IO;
using System.Text;
using System.Threading;

namespace ConsoleApp7
{
class Program
{
static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
MyThread myThread = new MyThread();
myThread.id = i + 1;
myThread.name = "张三" + i;
myThread.money = 1000 + i;
Thread thread = new Thread(myThread.ThreadMain);
thread.Start();
}
Console.ReadLine();
}

public class MyThread
{
public int id { set; get; }
public int money { set; get; }
public string name { set; get; }

public void ThreadMain()
{
int threadId = Thread.CurrentThread.ManagedThreadId;
Console.WriteLine("线程ID {0} {1} {2} {3}", threadId, id, money, name);
}
}
}
}

c# 多线程多个参数的更多相关文章

  1. 多线程调用有参数的方法---c# Thread 与 Task

    C#实现多线程的方式:Task——任务   简介 .NET 4包含新名称空间System.Threading.Tasks,它 包含的类抽象出了线程功能. 在后台使用ThreadPool. 任务表示应完 ...

  2. C#泛型参数多线程与复杂参数多线程

    背景:最近用多线程用的比较多自己走了一些弯路,分享出来希望大家少走弯路,C#中的多线程有两个重载,一个是不带参数的,一个是带参数的,但是即便是带参数的多线程也不支持泛型,这使得使用泛型参数多线程的时候 ...

  3. c# 多线程 调用带参数函数

    线程操作主要用到Thread类,他是定义在System.Threading.dll下.使用时需要添加这一个引用.该类提供给我们四个重载的构造函数(以下引自msdn).       Thread (Pa ...

  4. c#多线程调用有参数的方法

      Thread (ParameterizedThreadStart) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托.   Thread (ThreadStart) 初始 ...

  5. Tomcat性能参数设置

    Tomcat性能参数设置 Tomcat性能参数设置 博客分类: Java LinuxTomcat网络应用多线程Socket 默认参数不适合生产环境使用,因此需要修改一些参数 1.修改启动时内存参数.并 ...

  6. .NET多线程执行函数

    前面几篇文章一直在写LINQ,这里为什么会出现多线程?原因是DebugLZQ在写一个LINQ综合Demo的时候遇到了多线程,便停下手来整理一下.关于多线程的文章,园子里很多很多,因此关于多线程理论性的 ...

  7. 多线程2.md

    # 多线程  VS 多进程 - 程序:一堆代码以文本形式存入一个文档 - 进程: 程序运行的一个状态 - 包含地址空间.内存.数据栈等 - 每个进程由自己完全独立的运行环境,多进程共享数据是一个问题 ...

  8. 多线程(threading)示例

    一.多线程简单示例 import threading,time print('第一线程(默认):程序开始啦!') def takeANap(): time.sleep(5) print('第二线程:5 ...

  9. async await 多线程

    async await 并没有开启多线程  出现await的地方 只是开启了一个子线程继续往后执行  主线程返回 防止阻塞 相当于  await customerRepository.getall() ...

随机推荐

  1. 数据仓库001 - 复习Linux shell命令 - pwd mkdir mv tail -f xxx.log 和 ail -F xxx.log

    1.  [root@localhost ~]#  的含义 ?  [登录的用户  机器的名称 家目录] 2. 查看当前光标所在的目录   pwd [root@localhost ~]# pwd /roo ...

  2. mybatis错误:There is no getter for property named 'delegate' in 'class com.sun.proxy.$Proxy某某'

    错误描述: There is no getter for property named 'delegate' in 'class com.sun.proxy.$Proxy32' 错误原因: 1.你有多 ...

  3. NPOI 帮助类

    NPOI 帮助类 代码实现了来自于互联网 using System; using System.Data; using System.IO; using System.Text; using NPOI ...

  4. MicroPython:基于TPYBoard集合MAX7219点阵模块制作表白女神神器

    转载请注明文章来源,更多教程可自助参考docs.tpyboard.com,QQ技术交流群:157816561,公众号:MicroPython玩家汇 前言 又是一年毕业季,只有到了毕业季才会意识到自己又 ...

  5. Window权限维持(六):BITS Jobs

    Windows操作系统包含各种实用程序,系统管理员可以使用它们来执行各种任务.这些实用程序之一是后台智能传输服务(BITS),它可以促进文件到Web服务器(HTTP)和共享文件夹(SMB)的传输能力. ...

  6. 转 tty 设备读写

    转自https://feng-qi.github.io/2017/05/04/how-to-read-write-to-tty-device/ <p>这是 StackExchange 上的 ...

  7. GitHub中文社区

    今天在打开GitHub的时候,使用了bing.com搜索,输入GitHub进行搜索链接,排名第一的为GitHub中文社区,点击去发现这个社区还可以,我们看看GitHub中文社区有哪些好的地方 GitH ...

  8. 基于log4net的日志组件扩展封装,实现自动记录交互日志 XYH.Log4Net.Extend(微服务监控)

    背景: 随着公司的项目不断的完善,功能越来越复杂,服务也越来越多(微服务),公司迫切需要对整个系统的每一个程序的运行情况进行监控,并且能够实现对自动记录不同服务间的程序调用的交互日志,以及通一个服务或 ...

  9. img error 图片加载失败的最佳方案

    有时候, 当img的src加载失败, 会显示缺省碎片图片,  影响用户体验.  有一个js事件onerror就派上了用场. 它可以在加载失败时, 显示缺省的图片. 它有两种使用方式. 第一种: 使用纯 ...

  10. PHP获得毫秒数

    因为前端需要写函数处理时间戳,比较麻烦,所以我们有的时候,需要接口传递毫秒数给前端. 下面可以通过这个函数来获得毫秒数 <?php function getMillisecond() { lis ...