예제 #1
0
        protected void OnElementCreatedInternal(ElementBase el)
        {
            try
            {
                OnElementCreated?.Invoke(new SMElementEventArgs(Core.SM, el));
            }
            catch (Exception ex)
            {
                LogTo.Error(ex, "Error while signaling Element Created event");
            }
            finally
            {
                LastElementId = LastCreatedElementId = el.Id;

                if (_waitForElementId == WaitForElementCreatedTriggerId || _waitForElementId == WaitForElementAnyTriggerId)
                {
                    _waitForElementId       = -1;
                    _waitForElementResultId = el.Id;

                    _waitForElementCreatedEvent.Set();
                }

                else if (el.Id == _waitForElementId)
                {
                    _waitForElementId = -1;

                    _waitForElementIdEvent.Set();
                }

                _waitForElementAnyEvent.Set();
            }
        }
        protected virtual void Commit(int id,
                                      InfContentsElem?cttElem,
                                      InfElementsElem?elElem)
        {
            var el = Elements.SafeGet(id);

            if (el != null)
            {
                var flags = el.Update(cttElem,
                                      elElem);

                if (flags.HasFlag(ElementFieldFlags.Deleted))
                {
                    try
                    {
                        OnElementDeleted?.Invoke(new SMElementArgs(SMA.Instance,
                                                                   (IElement)el));
                    }
                    catch (Exception ex)
                    {
                        LogTo.Error(ex,
                                    "Error while signaling Element Deleted event");
                    }
                }

                else
                {
                    try
                    {
                        OnElementModified?.Invoke(new SMElementChangedArgs(SMA.Instance,
                                                                           (IElement)el,
                                                                           flags));
                    }
                    catch (Exception ex)
                    {
                        LogTo.Error(ex,
                                    "Error while signaling Element Modified event");
                    }
                }
            }

            else
            {
                el = CreateInternal(id,
                                    cttElem ?? default(InfContentsElem),
                                    elElem ?? default(InfElementsElem));
                Elements[id] = el;

                try
                {
                    OnElementCreated?.Invoke(new SMElementArgs(SMA.Instance,
                                                               (IElement)el));
                }
                catch (Exception ex)
                {
                    LogTo.Error(ex,
                                "Error while signaling Element Created event");
                }
            }
        }
예제 #3
0
 protected void OnElementCreatedInternal(ElementBase el)
 {
     try
     {
         OnElementCreated?.Invoke(new SMElementArgs(Core.SM, el));
     }
     catch (Exception ex)
     {
         LogTo.Error(ex,
                     "Error while signaling Element Created event");
     }
     finally
     {
         if (el.Id == _waitForElementId)
         {
             _waitForElementId = -1;
             _waitForElementEvent.Set();
         }
     }
 }
예제 #4
0
        protected virtual void Commit(int id,
                                      InfContentsElem cttElem,
                                      InfElementsElemContainer elElem)
        {
            try
            {
                var el = Elements.SafeGet(id);

                if (el != null)
                {
                    var flags = el.Update(cttElem,
                                          elElem);

                    if (flags.HasFlag(ElementFieldFlags.Deleted))
                    {
                        try
                        {
                            OnElementDeleted?.Invoke(new SMElementArgs(SMA.SMA.Instance,
                                                                       el));
                        }
                        catch (Exception ex)
                        {
                            LogTo.Error(ex,
                                        "Error while signaling Element Deleted event");
                        }
                    }

                    else
                    {
                        try
                        {
                            OnElementModified?.Invoke(new SMElementChangedArgs(SMA.SMA.Instance,
                                                                               el,
                                                                               flags));
                        }
                        catch (Exception ex)
                        {
                            LogTo.Error(ex,
                                        "Error while signaling Element Modified event");
                        }
                    }
                }

                else
                {
                    el = CreateInternal(id,
                                        cttElem,
                                        elElem);
                    Elements[id] = el;

                    try
                    {
                        OnElementCreated?.Invoke(new SMElementArgs(SMA.SMA.Instance,
                                                                   el));
                    }
                    catch (Exception ex)
                    {
                        LogTo.Error(ex,
                                    "Error while signaling Element Created event");
                    }
                }
            }
            finally
            {
                if (id == _waitForElementId)
                {
                    _waitForElementId = -1;
                    _waitForElementEvent.Set();
                }
            }
        }