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);

実行に時間がかからない場合、ループは 1 秒間に約 4 回実行されます。

于 2013-05-27T04:56:57.050 に答える