私は小さな方法を書きました。基本的には、ロック属性を設定するサービス (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<..>
ここで使用できます。
そして、私が使用しているストップウォッチは、タイムアウトを実装する許容可能な方法ですか?