C# 线程相关基础知识
参考文章:
C#多线程和异步(一)——基本概念和使用方法 https://www.cnblogs.com/wyy1234/p/9166444.html
C#多线程和异步(二),NET4.5 Taskl方法 https://www.cnblogs.com/wyy1234/p/9172467.html
C#多线程 [1] https://www.cnblogs.com/dotnet261010/p/6159984.html
C#多线程和线程池 [2] https://www.cnblogs.com/wwj1992/p/5976096.html
普通线程、线程锁 https://blog.csdn.net/weixin_50188452/article/details/114965110
消息队列中间件 C#调用RabbitMQ实现消息队列: https://www.cnblogs.com/mq0036/p/11726733.html
普通线程带参
无参启动
class Program
{
static void Main(string[] args)
{
ThreadTest test = new ThreadTest();
//无参调用实例方法
Thread thread1 = new Thread(test.Func2);
thread1.Start();
Console.ReadKey();
}
}
class ThreadTest
{
public void Func2()
{
Console.WriteLine("这是实例方法");
}
}
带一个参数,对象传参
class Program
{
static void Main(string[] args)
{
ThreadTest test = new ThreadTest();
//有参调用实例方法,ParameterizedThreadStart是一个委托,input为object,返回值为void
Thread thread1 = new Thread(new ParameterizedThreadStart(test.Func1));
thread1.Start("有参的实例方法");
Console.ReadKey();
}
}
class ThreadTest
{
public void Func1(object o)
{
Console.WriteLine(o);
}
}
带多个参数,对象传参
static void Main(string[] args)
{
MyThread myThread = new MyThread();
myThread.id = i + 1;
myThread.name = "张三" + i;
myThread.money = 1000 + i;
Thread thread = new Thread(myThread.ThreadMain);
thread.Start();
}
//参数类型实例化
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);
}
}
异步线程传参
普通线程等待,不卡UI方法
让你的线程等待mm毫秒,期间不会造成程序界面卡死。
把原来调用Thread.Sleep的地方调用这个就可以了
public static void Delay(int mm)
{
DateTime current = DateTime.Now;
while (current.AddMilliseconds(mm) > DateTime.Now)
{
Application.DoEvents();
}
return;
}

浙公网安备 33010602011771号