111,097
社区成员




public delegate void WorkThreadHandler();
public class WorkThread
{
public event WorkThreadHandler OnWorkdThreadEvent;
EventWaitHandle _wh = new AutoResetEvent(false);
Thread _worker;
private bool _isRun=false;
public void DoWork()
{
while (true)
{
if (_isRun)
{
WorkThreadHandler handler = OnWorkdThreadEvent;
if (handler != null) handler();
}
else
{
_wh.WaitOne();
}
}
}
public void Start()
{
_worker = new Thread(DoWork);
_worker.Start();
}
public void Resume()
{
_isRun = true;
_wh.Set();
}
public void Suspend()
{
_isRun = false;
_wh.WaitOne();
}
public void Stop()
{
_isRun = true;
_wh.Close();
}
}