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. 生成git的SSH公钥

    1.右键,点击  git bash here 2.安装成功后设置用户和邮箱git config --global user.name "name"git config --glob ...

  2. 字节跳动笔试题:1. 小于N的质数数量;2. 逆时针二维数组;3. 判断a+b>c

    1. 小于N的质数数量 import java.util.Scanner; /** * 计算小于N的质数数量 * @author Turing * */ public class Main4 { pu ...

  3. XStream处理XML用法

    参考:https://www.yiibai.com/xstream/xstream_json.html 1.简介: XStream是一个简单的基于Java库,Java对象序列化到XML,反之亦然(即: ...

  4. VS 中批量格式化、删除未使用的 using 语句代码的插件

    插件名称:Format All Files 插件地址:https://marketplace.visualstudio.com/items?itemName=munyabe.FormatAllFile ...

  5. 生成 Visual Studio 中的代码的文档生成神器

    当我们在团队开发中的时候,经常要给别人提供文档,有了这个工具,设置一下,一键生成.前提是你要写好xml注释. 这也是开源项目: https://sandcastle.codeplex.com/ 它就是 ...

  6. Java代码开发之《异常日志》

    异常日志 (一) 异常处理 1. [强制]Java 类库中定义的可以通过预检查方式规避的 RuntimeException 异常不应该通 过 catch 的方式来处理,比如:NullPointerEx ...

  7. Asp.Net真分页技术

    最近学校要做课题,闲来没事研究了下Asp.net的分页,我使用Repeater进行数据的绑定,每次从数据库读取到8条数据填充到Repeater中,这样搞可以降低数据库的压力,提高效率. 效果图如下: ...

  8. 探究java对象头

    探究java对象头 研究java对象头,我这里先截取Hotspot中关于对象头的描述,本文研究基于64-bit HotSpot VM 文件路径 openjdk-jdk8u-jdk8u\hotspot\ ...

  9. Docker(二)-在Docker中部署Nginx实现负载均衡(视频教程)

    本教程介绍利用Docker部署Nginx服务实现负载均衡. (双击全屏播放)

  10. CTF必备技能丨Linux Pwn入门教程——ROP技术(上)

    Linux Pwn入门教程系列分享如约而至,本套课程是作者依据i春秋Pwn入门课程中的技术分类,并结合近几年赛事中出现的题目和文章整理出一份相对完整的Linux Pwn教程. 教程仅针对i386/am ...