0

我正在尝试使以下代码更有效率,它可以正常工作,但需要 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 服务。

4

1 回答 1

1

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

Thread.Sleep(250);

如果执行时间不长,将导致循环每秒运行大约 4 次。

于 2013-05-27T04:56:57.050 回答