現在、AppFabric キャッシュ内のアイテムをロックしようとしていますが、作業が完了するまでロックを保持したいので、既にロックを所有しているときにロックがタイムアウトにならないように AppFabric に指示する必要があります。私の解決策は、すでにロックを所有している場合でも、同じアイテムを定期的にロックすることです。
while (true)
{
try
{
String value = cacheClient.GetAndLock("key1", TimeSpan.FromSeconds(10), out lockHandle, true) as String;
Console.WriteLine(value);
}
catch (DataCacheException e)
{
switch (e.ErrorCode)
{
case DataCacheErrorCode.KeyDoesNotExist:
Console.WriteLine("Key not found");
break;
case DataCacheErrorCode.ObjectLocked:
Console.WriteLine("Object Locked");
break;
default:
Console.WriteLine("Others " + e.ErrorCode);
break;
}
}
Thread.Sleep(1000);
}
しかし、問題があります。コードは DataCacheException をスローしており、ErrorCode は ObjectLocked です。ロックが別のクライアントによって所有されている場合、例外は現在のものと同じであるため、ロックをまだ持っているかどうかを知ることができません。誰でも問題を解決する解決策を持っていますか?
前もって感謝します。