示例#1
0
        /// <summary>
        /// Lazyオブジェクトを作成し、StackDisposableに登録します。
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="disp"></param>
        /// <param name="create"></param>
        /// <param name="leave"></param>
        /// <returns></returns>
        public static Lazy <T> CreateLazy <T>(this StackDisposable disp, Func <T> create, Action leave)
        {
            var    lazy = new Lazy <T>(create);
            Action act  = () =>
            {
                if (!lazy.IsValueCreated)
                {
                    return;
                }
                leave();
            };

            disp.Add(act);
            return(lazy);
        }
示例#2
0
 /// <summary>
 /// StackDisposableにActionを登録します。
 /// </summary>
 /// <param name="disp"></param>
 /// <param name="act"></param>
 public static void Add(this StackDisposable disp, Action act)
 {
     disp.Add(act.ToDisposable());
 }
示例#3
0
 /// <summary>
 /// StackDisposableに要素を登録します。
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="src"></param>
 /// <param name="disp"></param>
 /// <returns></returns>
 public static T Add <T>(this T src, StackDisposable disp)
     where T : IDisposable
 {
     disp.Add(src);
     return(src);
 }