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)); }