示例#1
0
        private async Task CoreHandler()
        {
            var canEnter = await once.WaitAsync(BindSettings.DelayTime);

            if (canEnter && Interlocked.CompareExchange(ref notify, 0, 1) == 1)
            {
                try
                {
                    var infos = ChangeWatcher.ChangeInfos;
                    ChangeWatcher.Clear();
                    var repo  = ChangeReport.FromChanges(GetConfiguration(), infos);
                    var saver = new ChangeSaver(repo, BindSettings.Conditions);
                    saver.EmitAndSave();
                    OnConfigChanged(infos);
                    Saved?.Invoke(this, infos);
                }
                catch (Exception ex)
                {
                    SaveException?.Invoke(this, ex);
                }
                finally
                {
                    Interlocked.Exchange(ref notify, 1);
                }
            }
        }
 private void HandleSaveFailure(SaveException e)
 {
     if (e.ValidationErrors.Any())
     {
         var message = FormatValidationErrors(e.ValidationErrors);
         ShowToast(Severity.Warning, message);
     }
     else
     {
         ShowToast(Severity.Error, e.Message);
     }
 }
示例#3
0
        private void CaptureErrorMessage(Exception exc)
        {
            if (TempData.ContainsKey("error"))
            {
                TempData.Remove("error");
            }
            TempData.Add("error", exc.Message);

            SaveException se = exc as SaveException;

            if (se != null)
            {
                TempData.Add("command", se.CommandText);
                TempData.Add("record", se.Record);
            }
        }
示例#4
0
 private async Task CoreHandler()
 {
     if (notify && await once.WaitAsync(BindSettings.DelayTime))
     {
         try
         {
             var infos = ChangeWatcher.ChangeInfos;
             ChangeWatcher.Clear();
             var repo  = ChangeReport.FromChanges(ChangeNotifyable, infos);
             var saver = new ChangeSaver(repo, BindSettings.Conditions);
             var res   = saver.EmitAndSave();
             Updater(BindValue);
             Saved?.Invoke(this, infos);
         }
         catch (Exception ex)
         {
             SaveException?.Invoke(this, ex);
         }
     }
 }
示例#5
0
 /// <summary>
 /// Reproduces the script from a failed statement execution so you can troubleshoot in your SQL tool of choice
 /// </summary>
 public abstract string GetScriptFromSaveException(SaveException exception);
示例#6
0
 public override string GetScriptFromSaveException(SaveException exception)
 {
     throw new NotImplementedException();
 }
示例#7
0
 /// <summary>
 /// Adds logger to list of exceptions saving handlers
 /// </summary>
 /// <param name="logger">delegate of form: void SaveException(Exception message);</param>
 public void AddExceptionsLogger(SaveException logger)
 {
     _logExceptionModbusRtu += logger;
     LogExceptionRsp += logger;
 }
示例#8
0
 /// <summary>
 /// Removes logger from current list of exceptions saving handlers
 /// </summary>
 /// <param name="logger">delegate of form: void SaveException(Exception message);</param>
 public void RemoveExceptionsLogger(SaveException logger)
 {
     LogExceptionRsp -= logger;
     _logExceptionModbusRtu -= logger;
 }