1

x 秒ごとにいくつかのデバイスをポーリングするアプリケーションがあります。私の実装は、デバイスごとに 1 つのスレッドに基づいています。

各スレッドはこのように実装されています

while(true){
    stopWatch.Start();
    //dowork
    stopWatch.Stop();
    time = (int)(delay - stopWatch.ElapsedMilliseconds);
    stopWatch.Reset();
    sleep(time);
}

今は正しい方法ですか、それともx秒ごとに起動して新しいタスクを作成するタイマーを実装する必要がありますか?

PS:各デバイスにはポーリングコードがあります

4

2 に答える 2

1

ループしているスレッドを使用すると、作業が軽減され、コードがより明確になります。だから私はあなたがそれをすることをお勧めします。

多くのスレッドがある場合、またはリソースを節約する必要がある場合は、タイマーまたは非同期スリープ ( Task.Delay+ async/await)を使用します。

于 2013-05-27T10:16:15.573 に答える