バックグラウンド ワーカーを使用して DLL をポーリングし、次のようなステータスを取得するメソッドがあります。
var timeout = DateTime.Now.AddSeconds(3);
while (System.Status != Status.Complete // our status is not complete
&& DateTime.Now < timeout // have not timed out
&& !_Worker.CancellationPending) // backgroundworker has not been canceled
{
//Thread.Yield();
//Thread.SpinWait(1);
//Thread.Sleep(1);
}
CPU % を見るとyield()
、spinwait()
PC でアプリが最大 50% まで起動します。私の CPU使用Sleep(1)
率は 6% のままです。を選択するように言われThread.Yield()
ましたが、CPU % のスパイクが気になります。このようなもののベストプラクティスは何ですか?