Beispiel #1
0
 /// <summary>
 /// 延迟 milliSecond 毫秒后执行 handler,与 javascript 里的 setTimeout 相似
 /// </summary>
 /// <param name="handler">托管函数</param>
 /// <param name="milliSecond">毫秒</param>
 public static void SetTimeout(AnonymousHandler handler, int milliSecond)
 {
     new Timer((a) => {
         try {
             handler();
         } catch { }
     }, null, milliSecond, milliSecond);
 }
Beispiel #2
0
 /// <summary>
 /// 开启事务(不支持异步)
 /// </summary>
 /// <param name="handler">事务体 () => {}</param>
 /// <param name="timeout">超时</param>
 public static void Transaction(AnonymousHandler handler, TimeSpan timeout)
 {
     try {
         Instance.BeginTransaction(timeout);
         handler();
         Instance.CommitTransaction();
     } catch (Exception ex) {
         Instance.RollbackTransaction();
         throw ex;
     }
 }
Beispiel #3
0
 /// <summary>
 /// 重试某过程 maxError 次,直到成功或失败
 /// </summary>
 /// <param name="handler">托管函数</param>
 /// <param name="maxError">允许失败的次数</param>
 /// <returns>如果执行成功,则返回 null, 否则返回该错误对象</returns>
 public static Exception Trys(AnonymousHandler handler, int maxError)
 {
     if (handler != null)
     {
         Exception ex = null;
         for (int a = 0; a < maxError; a++)
         {
             try {
                 handler();
                 return(null);
             } catch (Exception e) {
                 ex = e;
             }
         }
         return(ex);
     }
     return(null);
 }
Beispiel #4
0
 /// <summary>
 /// 开启事务(不支持异步),10秒未执行完将超时
 /// </summary>
 /// <param name="handler">事务体 () => {}</param>
 public static void Transaction(AnonymousHandler handler)
 {
     Transaction(handler, TimeSpan.FromSeconds(10));
 }