Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
 /// <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);
         }
     });
 }