protected bool mIsBackground; // 是否为后台线程,如果是后台线程,则在应用程序关闭时,子线程会自动强制关闭 public CustomThread(string name) { mName = name; mFinish = true; mRunning = false; mCallback = null; mThread = null; mTimeLock = null; mPause = false; mIsBackground = true; }
public void start(CustomThreadCallback 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; logInfo("线程启动成功 : " + mName, LOG_LEVEL.LL_FORCE); }
public void start(CustomThreadCallback callback, int frameTimeMS = 15) { logConsole("准备启动线程 : " + mName); if (mThread != null) { return; } mTimeLock = new ThreadTimeLock(frameTimeMS); mRunning = true; mCallback = callback; mThread = new Thread(run); mThread.Name = mName; mThread.Start(); mThread.IsBackground = mIsBackground; logConsole("线程启动成功 : " + mName); }
public void stop() { UnityUtility.logInfo("准备退出线程 : " + mName, LOG_LEVEL.LL_FORCE); mRunning = false; while (!mIsBackground && !mFinish) { } if (mThread != null) { mThread.Abort(); } mThread = null; mCallback = null; mTimeLock = null; mPause = false; UnityUtility.logInfo("线程退出完成! 线程名 : " + mName, LOG_LEVEL.LL_FORCE); }
public void stop() { if (mThread == null) { return; } mRunning = false; while (!mIsBackground && !mFinish) { } mThread?.Abort(); mThread = null; mCallback = null; mTimeLock = null; mPause = false; logInfo("线程退出完成! 线程名 : " + mName, LOG_LEVEL.LL_FORCE); }
public void stop() { logConsole("准备退出线程 : " + mName); mRunning = false; while (!mIsBackground && !mFinish) { } if (mThread != null && !mIsBackground) { mThread.Abort(); } mThread = null; mCallback = null; mTimeLock = null; mPause = false; logConsole("线程退出完成! 线程名 : " + mName); }