public MyThread(string name) { mName = name; mCallback = null; mThread = null; mTimeLock = null; mIsBackground = true; mRunning = false; mFinish = true; mPause = false; }
public void start(MyThreadCallback callback, int frameTimeMS = 15, int forceSleep = 5) { if (mThread != null) { return; } mTimeLock = new ThreadTimeLock(frameTimeMS); mTimeLock.setForceSleep(forceSleep); mRunning = true; mCallback = callback; mThread = new Thread(run); mThread.Name = mName; mThread.Start(); mThread.IsBackground = mIsBackground; log("线程启动成功 : " + mName, LOG_LEVEL.FORCE); }
public void stop() { if (mThread == null) { return; } mRunning = false; while (!mIsBackground && !mFinish) { Thread.Sleep(0); } mThread?.Abort(); mThread = null; mCallback = null; mTimeLock = null; mPause = false; log("线程退出完成! 线程名 : " + mName, LOG_LEVEL.FORCE); }