Beispiel #1
0
        private void btnGenerateOperationLog_Click(object sender, EventArgs e)
        {
            try
            {
                Task.Factory.StartNew(() =>
                {
                    var log = new OperationLog();
                    // 新的操作记录,编号必须为零。
                    log.UserName             = GlobalServices.UAC.CurrentUserName;
                    log.IsManual             = DateTime.Now.Second % 2 == 0;
                    log.OperationDescription = "Operation X";
                    log.OperationType        = OperationType.OperationX;
                    log.TargetDeviceCode     = (uint)DateTime.Now.Second;
                    log.ResultDescription    = "已发送";

                    // 发布消息。
                    var args = new OpeationLogCreateOrUpdateEventArgs(log);
                    GlobalMessageBus.PublishOperationLogChanged(args);

                    // 延时2秒,产生一个确认。
                    Thread.Sleep(2000);
                    log.ResultDescription = "已执行";
                    log.ResultTimestamp   = log.Timestamp + TimeSpan.FromSeconds(10);
                    log.ResultType        = DateTime.Now.Second % 2 == 0 ? OperationResult.Success : OperationResult.Failure;
                    GlobalMessageBus.PublishOperationLogChanged(args);
                });
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
 /// <summary>
 /// 当新的操作日志产生时。
 /// </summary>
 private void OnNewOperLogGenerated(object sender, OpeationLogCreateOrUpdateEventArgs args)
 {
     try
     {
         if (args.Value.Code == 0)
         {
             GlobalServices.SEM.AddOperationLog(args.Value);
         }
         else
         {
             GlobalServices.SEM.UpdateOperationLog(args.Value);
         }
     }
     catch (System.Exception ex)
     {
         LogUtility.Error(ex);
     }
 }
 /// <summary>
 /// 发布 操作记录产生或更新 消息。
 /// </summary>
 public static IMessageResponse PublishOperationLogChanged(OpeationLogCreateOrUpdateEventArgs args, object sender = null)
 {
     return(SystemEventMessageBus.Publish(OperationRecordTopic, args, sender, false));
 }