-3

私は小さな方法を書きました。基本的には、ロック属性を設定するサービス (Web サービスではない) を呼び出します。それは機能しますが、私はそれを改善することに興味があります。本当に新しいスレッドでこれを実行する必要がありますか?

私はこれを内部で実行していますが、呼び出しdo..whileの間にはありません。thread.sleep

ストップウォッチを使用して実際に 20 秒以上経過したことを記録していますが、ロックを設定できなかったため、とにかく終了しました。

public bool ObtainLock(Uri lockUri)
{
    bool lockResult = false;

    var sw = new Stopwatch();
    sw.Start();
    do
    {
        lockResult = myService.SetLockBit(lockUri);
    }
    while (!lockResult || sw.ElapsedMilliseconds >= 20000);

    sw.Stop();

    return lockResult;
}

改善される可能性があるように思えますが、スレッド化が心配です。myservice は Web サービスではなく、クラスの別のメソッドであるため、Task<..>ここで使用できます。

そして、私が使用しているストップウォッチは、タイムアウトを実装する許容可能な方法ですか?

4

2 に答える 2