/// <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); }
/// <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; } }
/// <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); }
/// <summary> /// 开启事务(不支持异步),10秒未执行完将超时 /// </summary> /// <param name="handler">事务体 () => {}</param> public static void Transaction(AnonymousHandler handler) { Transaction(handler, TimeSpan.FromSeconds(10)); }