如何在c#中使while语句中的foreach循环有效

本文关键字:foreach 循环 有效 语句 while 中使 | 更新日期: 2023-09-27 18:15:22

我试图使下面的代码更有效一点,它应该工作,但它需要12%的处理器资源。我觉得这件事可以做得更好。

localService是这样的:

public class localService
{
    public string ID { get; set; }
    public string Name { get; set; }
    public string Server { get; set; }
    public string Status { get; set; }
}

这是我想要改进的功能。

        while (running)
        {
            try
            {
                IEnumerable<localService> serviceList = Startup.ServiceList;
                foreach (var service in serviceList)
                {
                    using (var sc = new ServiceController(service.ID))
                    {
                        if (sc.Status.ToString() != service.Status)
                        {
                            // Do some work here
                        }
                    }
                }
            }
            catch (Exception)
            {
                running = false;
            }
        }

serviceList目前包含4个localService对象。我把它写在一个控制台应用程序中,目的是使它成为一个windows服务。

如何在c#中使while语句中的foreach循环有效

如果您不需要它尽可能快地运行,您可以在循环末尾添加一个Thread.Sleep(ms); in。它会导致您的程序在传入的大约毫秒数内什么也不做。

Thread.Sleep(250);
如果执行时间不长,

将导致循环每秒运行4次。