和尚洗头用飘柔

导航

task interval c#

public class TestTask {

        public async Task PeriodicFooAsync(int millisecondsDelay, CancellationToken cancellationToken) {

            while (true) {
                string msg = await FooAsync();
                Console.WriteLine($"{msg}  {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}  {Thread.CurrentThread.ManagedThreadId}");
                await Task.Delay(millisecondsDelay, cancellationToken);
            }

        }

        public async Task<string> FooAsync() {
            return await Task<string>.Factory.StartNew(() => {
                Thread.Sleep(5000);
                return "Test";
            });
        }
}


class Program {
               

        static void Main(string[] args) {

            CancellationTokenSource cancelToken = new CancellationTokenSource();

            TestTask t = new TestTask();
            Task.Factory.StartNew(()=> t.PeriodicFooAsync(2000, cancelToken.Token));

            var code = Console.ReadLine();
            if(code == "stop") {
                cancelToken.Cancel();
                cancelToken.Dispose();
            }

            Console.Read();
            
        }

    }

 

posted on 2017-07-20 09:29  和尚洗头用飘柔  阅读(129)  评论(0)    收藏  举报