C# 创建多线程的函数

C#中,创建子线程与Task任务相比,能够循环执行特定操作,可以用于长期监听TCP消息,发送心跳等。
本文对C#的多线程简单封装一下,哎,以方便线程的创建和命名。

不带参数的

定义

using System.Threading;

/// <summary>
/// 线程的工作函数类型
/// </summary>
public delegate void WorkProc();

/// <summary>
/// 创建进程的函数
/// </summary>
/// <param name="work">进程要执行的函数</param>
/// <param name="tName">进程的名称</param>
public static void CreateWorkThread(WorkProc work, string tName)
{
    Thread thread = new Thread(new ThreadStart(work));  // 创建一个新线程,指定线程要执行的方法为 work
	thread.Name = tName;        // 设置线程的名称为 tName
	thread.IsBackground = true; // 将线程设置为后台线程,这意味着当主线程结束时,该线程也会被终止
	thread.Start();             // 启动线程,使其开始执行指定的工作方法
}

应用

CreateWorkThread(() =>
{
    while (true)
    {
        try
        {   
        	// 要执行的代码
        }
        catch (Exception ex)
        {
            Console.WriteLine($"报错:{ex}");
        }
    }
}, "MyThread4Test");

带参数的

参考:ParameterizedThreadStart 委托Semaphore 类示例。

定义

/// <summary>
/// 带参数的工作函数类型
/// </summary>
/// <param name="obj">参数类型需要是Object(可以封装其他类型为1个)</param>
public delegate void ParamedWorkProc(object obj);
/// <summary>
/// 创建进程的函数
/// </summary>
/// <param name="work">进程要执行的函数</param>
/// <param name="tName">进程的名称</param>
/// <param name="param">进程的参数</param>
public static void CreateWorkThread(ParamedWorkProc work, string tName, object param)
{
    Thread thread = new Thread(new ParameterizedThreadStart(work));  // 创建一个新线程,指定线程要执行的方法为 work
    thread.Name = tName;            // 设置当前线程名称为 tName
    thread.IsBackground = true;     // 将线程设置为后台线程,这意味着当主线程结束时,该线程也会被终止
    thread.Start(param);            // 启动线程,并将参数传递给work函数
}

应用

public static void Main()
{
    // 创建5个进程
    for (int i = 1; i <= 5; i++)    
    {
        CreateWorkThread((num) =>
        {
            Console.WriteLine("Thread {0} begins ", num); // 开始
            Thread.Sleep(1000);                           // 工作负载
            Console.WriteLine("Thread {0} exits", num);   // 结束
        }, $"Thread{i}", i);    // 还有:线程名,工作线程的参数
    }
    Console.ReadLine();
}

使用效果

在这里插入图片描述

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值