线程
System.Threading
创建线程代理
ThreadStart threadFunc;
MyClass myObject = new MyClass();
threadFunc = new ThreadStart(myObject.Func1);
创建线程对象
Thread thread1 = new Thread(threadFunc);
合并
MyClass myObject = new MyClass();
Thread thread1 = new Thread(new ThreadStart( myObject.Func1 ));
启动线程
thread1.Start();
使主线程睡眠
Thread.Sleep(1000);
挂起
thread1.Suspend();
恢复
thread1.Resume();
终止线程
thread1.Abort();
使调用线程一直处于等待状态直到被调用线程结束
thread1.Join();
设置等待时间
if (thread1.Join(1000) == true)
{
//被等待线程已结束
}
else
{
//被等待线程没结束
}
线程之间的同步
Monitor.Enter(myObject);
....//可在此用 Monitor.Pulse(myObject); 释放指定对象上的同步锁,转入就绪队列
//Monitor.PulseAll(myObject);
Monitor.Exit(myObject);
指定时间获取同步锁,不会被堵塞
Monitor.TryEnter(myObject, 10000);
或
Monitor.TryEnter(myObject, Timeout.Infinite);
释放同步锁,线程进入等待
Monitor.Wait(myObject);
Monitor.Wait(myObject,1000);
创建线程代理
ThreadStart threadFunc;
MyClass myObject = new MyClass();
threadFunc = new ThreadStart(myObject.Func1);
创建线程对象
Thread thread1 = new Thread(threadFunc);
合并
MyClass myObject = new MyClass();
Thread thread1 = new Thread(new ThreadStart( myObject.Func1 ));
启动线程
thread1.Start();
使主线程睡眠
Thread.Sleep(1000);
挂起
thread1.Suspend();
恢复
thread1.Resume();
终止线程
thread1.Abort();
使调用线程一直处于等待状态直到被调用线程结束
thread1.Join();
设置等待时间
if (thread1.Join(1000) == true)
{
//被等待线程已结束
}
else
{
//被等待线程没结束
}
线程之间的同步
Monitor.Enter(myObject);
....//可在此用 Monitor.Pulse(myObject); 释放指定对象上的同步锁,转入就绪队列
//Monitor.PulseAll(myObject);
Monitor.Exit(myObject);
指定时间获取同步锁,不会被堵塞
Monitor.TryEnter(myObject, 10000);
或
Monitor.TryEnter(myObject, Timeout.Infinite);
释放同步锁,线程进入等待
Monitor.Wait(myObject);
Monitor.Wait(myObject,1000);