/// <summary> /// 创建并循环执行一个线程 /// </summary> /// <param name="intervalInfo">线程信息</param> /// <returns></returns> public static Thread RunLoop(IntervalInfo intervalInfo) { if (intervalInfo == null) { return(null); } Thread executeThread = RunThread(delegate() { do { try { intervalInfo.ExecuteCode?.Invoke(); } catch (Exception ex) { intervalInfo.Break = true; throw ex; } finally { Sleep(intervalInfo.Interval); } } while (!intervalInfo.Break); }); intervalInfo.CurrentThread = executeThread; return(executeThread); }
/// <summary> /// 以异步的方式循环运行一个委托方法(可中断) /// </summary> /// <param name="intervalInfo">线程信息</param> /// <returns></returns> public static async Task RunAsync(IntervalInfo intervalInfo) { if (intervalInfo == null) { return; } await Task.Run(() => { while (!intervalInfo.Break) { intervalInfo?.ExecuteCode.Invoke(); Sleep(intervalInfo.Interval); } }); }