通过Thread发起线程,,,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace 通过Thread发起线程
{
class Program
{
static void Main(string[] args)
{
//直接使用Thread类,以及其方法
Thread threadA = new Thread(DownLoadFile);
threadA.Start();
Console.WriteLine("Main");
//使用Lamdba表达式
Thread threadB = new Thread(
() => {
Console.WriteLine("使用Lamdba表达式, 开始下载" + Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(2000);
Console.WriteLine("使用Lamdba表达式,下载完成");
}
);
threadB.Start();
//传递带参数的方法,,参数是object类型的,,
Thread threadC = new Thread(UpDataFile);
threadC.Start("Czhenya.jpeg");
Console.WriteLine("Main");
Console.ReadKey();
}
static void DownLoadFile()
{
Console.WriteLine("开始下载,此协程的Id是"+Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(2000);
Console.WriteLine("下载完成");
}
static void UpDataFile(object filename)
{
Console.WriteLine("开始上传" + filename);
Thread.Sleep(2000);
Console.WriteLine("上传完成");
}
}
}
使用线程池创建线程
using System;
using System.Threading;
namespace 线程池创建线程
{
class Program
{
static void Main(string[] args)
{
ThreadPool.QueueUserWorkItem(SmallThread);
ThreadPool.QueueUserWorkItem(SmallThread);
ThreadPool.QueueUserWorkItem(SmallThread);
ThreadPool.QueueUserWorkItem(SmallThread);
ThreadPool.QueueUserWorkItem(SmallThread);
ThreadPool.QueueUserWorkItem(SmallThread);
ThreadPool.QueueUserWorkItem(SmallThread);
Console.Read();
}
static void SmallThread(object filename)
{
Console.WriteLine("线程开始,ID:"+Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(1000);
Console.WriteLine("线程结束");
}
}
}
使用任务开启线程
using System;
using System.Threading;
using System.Threading.Tasks;
namespace 任务开始线程
{
class Program
{
static void Main(string[] args)
{
//第一种 任务开始方式
Task task = new Task(ThreadDemo);
task.Start();
//第二种 工厂模式,,
TaskFactory tf = new TaskFactory();
Task t = tf.StartNew(ThreadDemo);
Console.ReadKey();
}
static void ThreadDemo()
{
Console.WriteLine("任务开始,ID:" + Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(1000);
Console.WriteLine("任务结束");
}
}
}