public void LookForNest() { IOsterFabrikCallback callback = GetCallbackChannel(); lock (_nester) { if (_nester.Count > 0) { Nest nest = _nester.Dequeue(); try { callback.ReturnNest(nest); NotifyNester(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); _nester.Enqueue(nest); } } else { lock (_waitForNest) { _waitForNest.Enqueue(callback); } } } }
public void AddNest(Nest nest) { lock (_nester) { lock (_waitForNest) { while (_waitForNest.Count > 0 && nest != null) { IOsterFabrikCallback callback = _waitForNest.Dequeue(); if (IsCommunicationOpened(callback)) { try { callback.ReturnNest(nest); nest = null; } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } } } if (nest != null) { _nester.Enqueue(nest); NotifyNester(); } } }
public void NotifyNestVerschickt(Nest nest) { lock (_ausgeliefert) { _ausgeliefert.Enqueue(nest); DoNotifyNestVerschickt(); } }