.net4.0下实现task.Run task.Delay

 class TaskEx
    {
        public static Task Run(Action action)
        {
            var tcs = new TaskCompletionSource();
            new Thread(() => {
                try
                {
                    action();
                    tcs.SetResult(null);
                }
                catch (Exception ex)
                {
                    tcs.SetException(ex);
                }
            }){ IsBackground = true }.Start();
            return tcs.Task;
        }
        public static Task Run(Func function)
        {
            var tcs = new TaskCompletionSource();
            new Thread(() =>
            {
                try
                {
                    tcs.SetResult(function());
                }
                catch (Exception ex)
                {
                    tcs.SetException(ex);
                }
            })
            { IsBackground = true }.Start();
            return tcs.Task;
        }
        public static Task Delay(int milliseconds)
        {
            var tcs = new TaskCompletionSource();
            var timer = new System.Timers.Timer(milliseconds) { AutoReset = false };
            timer.Elapsed += delegate { timer.Dispose();tcs.SetResult(null); };
            timer.Start();
            return tcs.Task;
        }
    } 
  

 

你可能感兴趣的:(.net4.0下实现task.Run task.Delay)