如何将其转换为异步过程

本文关键字:异步 过程 转换 | 更新日期: 2023-09-27 18:04:18

我有一个像

这样的循环
        for(DateTime later = DateTime.Now.AddSeconds(5); DateTime.Now < later; Thread.Sleep(500))
        {
            // ... stuff
        }

,我想知道是否有一种简单的方法将其转换为非阻塞的方式做事情。

如何将其转换为异步过程

我最喜欢的方法是使用backgroundworker类并将您的函数插入其RunWorkerAsynch/DoWork方法中。这里和这里都有很好的例子。

或者你可以运行一个单独的线程。有很多关于c#中多线程的文章。

添加一个线程对象并将阻塞循环放入其中,如下所示:

    public static void Start()
    {
        for(DateTime later = DateTime.Now.AddSeconds(5); DateTime.Now < later; Thread.Sleep(500))
        {
            Console.WriteLine("Other Thread: " + DateTime.Now.ToLongTimeString());
        }
    }
    public static void Main(string[] args)
    {
        Thread thread = new Thread(Start);
        thread.Start(); 
    }

详情见https://msdn.microsoft.com/en-us/library/system.threading.threadstart(v=vs.110).aspx

这是我做的一个小例子…http://rextester.com/QWMG44444享受!