Я хочу создать стек ресурсов, которые будут использоваться разными потоками, но хотят блокировать поток вызовов до таймаута, пока ресурс не станет доступным. Метод WaitUntilTheStackHasMember() - это часть, которой мне не хватает. Хотя я использовал метод, подобный описанному в MSDN timer and autoreset event, но он усложнился.Стек ресурса, который ждет, если пустой, до тех пор, пока элемент не будет нажат
Есть ли более простой способ сделать это?
Class ResStack
{
public TimeSpan TimeOut { get; set; }
private object lockSync;
private Stack<Resource> Resources;
ResStak()
{
// populate Stack
}
public void AddResource (Resource resource)
{
lock (lockSync)
{
Resource.Push(resource);
}
}
private Resource PopRes()
{
Resource res = null;
lock (lockSync)
{
if (Resources.Count > 0)
{
res = Resources.Pop();
}
else
{
WaitUntilTheStackHasMember() // Not implemented
}
}
return res;
}