2017-07-26 6 views
2

私はC#のコンソールアプリケーションの上に "Thread.Sleep"を持っていた私の以前の解決策を知っています(私はいつも普通のSelenium/ChromedriverのWebDriverWait)は、スリープ期間の全期間スレッド全体をフリーズするため、良い解決策ではありません。thread.sleepをもっと激しく置き換えてください

私はしないでください: System.Threading.Thread.Sleep(250); 次に何をすればよいですか?私は別のステートメントではなく、物事のためのラッパーではないので、これは本当に面倒で本当に速くなるので。私はThread.Sleepを使用した数十の場所を持っています。しかし、明らかに私はクラス全体を使ってそれを行うことができます - 必要であれば、通常の方法のように呼び出せるようにしたいだけです。

これまでのところ、これは私が作業を見つけた最高です:

class Tools 
{ 
    private static async Task _Sleep(int ms) 
    { 
     await Task.Delay(ms); 
    } 

    public static void Sleep(int ms) 
    { 
     var task = _Sleep(ms); 
     task.Wait(); 
    } 
} 

は、私が何か他のものとの1ということ置き換えるべきか?

+0

ブロックとして

await MyFunction(); 

またはコールバック/イベントハンドラ関数が寝ていません。この質問には文脈が十分ではありません。あなたは本当に眠る必要は全くありません –

答えて

2

スリープを使用する理由はまれです。 1000のうち999件で が悪いコーディングです。 任意の時間を待つ代わりに、必要な時間を正確に待つ必要があります。 たとえば、あなたが使用する必要があります。そのよう

WebBrowser wb = new WebBrowser(); 
wb.DocumentCompleted += Wb_DocumentCompleted; 
... 
private void Wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    //do your thing... 
} 
関連する問題