目录
本篇简单记录一下异步编程和并行编程,并以下图一个 Demo 来演示,源码地址我会公布在文章结尾。
-
异步编程
个人觉得,异步无非就是不影响某个线程的情况下,在另外的线程里执行任务的过程。异步编程即多线程编程。C# 里多线程编程写法有很多种,这里记录三种。
-
1. Thread
Thread 算是比较常用的写法,出来时间也比较早,一般分带参数和不带参数两种写法:
Thread thread1 = new Thread(new ThreadStart(ThreadMethod1));//不带参数
thread1.Start();
Thread thread2 = new Thread(new ParameterizedThreadStart(ThreadMethod2));//带参数
thread2.Start(para);
某些时候,不能任由线程各自运行,比如需要等待所有线程结束后再去做某件事,这个时候就需要线程同步,同步方式有很多种,并不是本文重点,感兴趣的请自行百度。这里介绍一种事件等待方式,而这种方式就可以用到带参数的线程写法:
static void Main(string[] args)
{
TestThread();
}
private static void TestThread()
{
ManualResetEvent resetEvent = new ManualResetEvent(false);
Thread thread1 = new Thread(new ParameterizedThreadStart(StartByThread));
thread1.Start(resetEvent);
WaitThread(resetEvent);
}
private static void StartByThread(object para)
{
ManualResetEvent mre= (ManualResetEvent)para;
for (int i = 1; i < 5; i++)
{
Console.WriteLine("Execute "+i.ToString());
Thread.Sleep(1000);
}
mre.Set();
}
private static void WaitThread(ManualResetEvent e)
{
var waits = new List<EventWaitHandle>();
waits.Add(e);
WaitHandle.WaitAll(waits.ToArray());
Console.WriteLine("After Wait");
}