现在我正在尝试锁定 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。这使我无法知道我是否还有锁,因为如果锁由另一个客户端拥有,则异常与当前的相同。有没有人有解决问题的方法?
先感谢您。