public static EnterFunc GetFunc(EnterFunc enterFunc) { ReEntryLock lockObj = new ReEntryLock(); return delegate() { lockObj.Run(enterFunc); }; }
/// <summary> /// 最初の呼び出し(再入呼び出しではない)の時だけ、 /// 指定したデリゲートを実行します。 /// </summary> /// <param name="enterFunc"></param> public void Run(EnterFunc enterFunc) { lock (this) { if (isEnter) return; try { isEnter = true; enterFunc(); } finally { isEnter = false; } } }