예제 #1
0
        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);
                    }
                }
            }
        }
예제 #2
0
        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();
                }
            }
        }
예제 #3
0
 public void NotifyNestVerschickt(Nest nest)
 {
     lock (_ausgeliefert)
     {
         _ausgeliefert.Enqueue(nest);
         DoNotifyNestVerschickt();
     }
 }
예제 #4
0
        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();
                }
            }
        }
예제 #5
0
 public void NotifyNestVerschickt(Nest nest)
 {
     lock (_ausgeliefert)
     {
         _ausgeliefert.Enqueue(nest);
         DoNotifyNestVerschickt();
     }
 }