C#提供了丰富的多线程操作,为编程带来了极大的便利,但如果使用不当也会带来各种各样的麻烦。
这里把C#中多线的操作进行了一下简单的封装,使它对外提供的接口简洁,易于控制。
保留一下的代码片段,以备日后查用。
BaseThread基类,线程派生类可以继承这个基类,并且实现自己的Run方法。
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
namespace BaseThread
{
public class BaseThread
{
public enum ThreadStatus
{
CREATED,
RUNNING,
STOPED,
};
private int m_Tid;
private bool m_IsAlive;
private ThreadStatus m_Status;
private Thread m_WorkingThread;
private static void WorkFunction(object arg)
{
try
{
System.Diagnostics.Trace.WriteLine("BaseThread::WorkFunction {");
((BaseThread)arg).Run();
System.Diagnostics.Trace.WriteLine("BaseThread::WorkFunction }");
}
catch (ThreadAbortException abt_ex)
{
System.Diagnostics.Trace.WriteLine("BaseThread::WorkFunction ThreadAbortException " + abt_ex.ToString());
Thread.ResetAbort();
}
catch (ThreadInterruptedException int_ex)
{
System.Diagnostics.Trace.WriteLine("BaseThread::WorkFunction ThreadAbortException " + int_ex.ToString());
}
catch (Exception e