在C#中,我们可以使用Thread类来实现多线程编程。下面是使用Thread类来创建线程的详细攻略:
创建线程
要使用Thread实现线程,首先需要创建一个Thread对象,包含线程要执行的方法。
Thread thread = new Thread(new ThreadStart(ThreadMethod));
此处ThreadMethod代表线程要执行的方法。
启动线程
使用Thread对象的Start方法来启动线程。
thread.Start();
在线程中执行任务
在线程中执行任务可以通过以下几种方式:
1.使用Lambda表达式
Thread thread = new Thread(() =>
{
//执行任务的代码
});
thread.Start();
2.使用委托方法
Thread thread = new Thread(new ThreadStart(ThreadMethod));
thread.Start();
private void ThreadMethod()
{
//执行任务的代码
}
3.使用带参数的委托方法
Thread thread = new Thread(new ParameterizedThreadStart(ParameterizedThreadMethod));
thread.Start(param);
private void ParameterizedThreadMethod(object obj)
{
//执行任务的代码
}
线程同步与互斥
在使用多线程时,常常会出现多个线程对同一个资源进行访问的情况,这时就需要用到线程同步和互斥操作。
C#中,常用的实现线程同步和互斥的操作有以下几种:
1.使用lock关键字
lock关键字可以使多个线程以互斥的方式访问共享资源。
private object lockObject = new object();
public void Method()
{
lock(lockObject)
{
//访问共享资源的代码
}
}
2.使用Mutex互斥体
Mutex可以确保在同一时刻只有一个线程访问共享资源。
private Mutex mutex = new Mutex();
public void Method()
{
mutex.WaitOne();
//访问共享资源的代码
mutex.ReleaseMutex();
}
示例说明
示例1:使用Thread创建线程并输出1~10
using System;
using System.Threading;
namespace ThreadDemo
{
class Program
{
static void Main(string[] args)
{
Thread thread = new Thread(new ThreadStart(PrintNumbers));
thread.Start();
Console.ReadKey();
}
static void PrintNumbers()
{
for (int i = 1; i <= 10; i++)
{
Console.WriteLine(i);
}
}
}
}
示例2:使用lock关键字保证线程同步并输出1~100
using System;
using System.Threading;
namespace ThreadDemo
{
class Program
{
private static int _count = 0;
private static object _lockObject = new object();
static void Main(string[] args)
{
for (int i = 0; i < 3; i++)
{
Thread thread = new Thread(new ThreadStart(AddCount));
thread.Start();
}
Console.ReadKey();
}
static void AddCount()
{
for (int i = 0; i < 50; i++)
{
lock (_lockObject)
{
_count++;
Console.WriteLine("线程ID:{0},当前计数器值:{1}", Thread.CurrentThread.ManagedThreadId, _count);
}
}
}
}
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 中如何使用Thread - Python技术站