0

Thread.Sleep()私がヒットしているサードパーティ API への API トラフィック速度の制限により、コードのセクションで実際に実行されることを確認する必要があります。これを行う最も信頼できる方法は、プロセスを非同期ではなく同期で実行することだと思います-System.Timer、CurrentThreadなどのアイデアを楽しんでいます.

質問: Thread.Sleep() がすべての処理のそれ以上の実行を確実に防止する最も信頼できる方法は何ですか? または一般的に、Windows サービスの実行を一時停止する最も信頼できる方法は何ですか? プロセスが同期的に実行されるようにするにはどうすればよいですか?

4

1 に答える 1

1

asp.net アプリに対するユーザーの各要求は、独自のスレッドで実行されます。そのトラフィックを同期するには、シングルトン オブジェクトを作成し、ロックを使用するメソッドを構築します。Lock は、現在のスレッドが終了するまで、すべてのスレッドを実際にロックアウトします。

したがって、タイムアウトを設定する必要がある場合は、ロック ブロックを作成し、内部にタイムアウトを設定します。これで、すべてのスレッドが待機する必要があります...

このようなもの

public class ThreadLock
{
    private static readonly object myLock;

    public void LockTimeout()
    {
        // --> first thread will trigger the following code. 
        // All other threads will wait 
        // <-- HERE 
        // until the first went through 
        lock (myLock)
        {
            //... do some timeout work
        }
    }
}

とにかく、なぜあなたがこのようなことをしたいのか、私にはよくわかりません. お役に立てれば

于 2013-09-22T14:56:48.033 に答える