OnBreak(Breakpoint: IMsBreakpoint);
OnBreak(Breakpoint: Prognoz.Platform.Interop.Ms.IMsBreakpoint);
Breakpoint. Точка останова, сгенерировавшая событие.
Метод OnBreak реализует событие, происходящее при срабатывании точки останова во время расчета задачи моделирования.
Для корректного использования метод должен быть переопределен в пользовательском классе, который является обработчиком событий. Также данный обработчик должен быть задан в параметрах, используемых для расчета задачи моделирования.
В примере приведено описание пользовательского класса, являющегося обработчиком событий. Для выполнения примера добавьте ссылку на системную сборку «Ms».
Class MCallback: ProblemCalculationCallback
Public Sub OnError(Message: String);
Begin
End Sub OnError;
Public Sub OnFinish;
Begin
End Sub OnFinish;
Public Sub OnMessage(Message: String);
Begin
Debug.WriteLine(DateTime.Now.ToString + " > " + Message);
End Sub OnMessage;
Public Sub OnModelCalculation(Model: IMsModel);
Begin
End Sub OnModelCalculation;
Public Sub OnStep;
Begin
End Sub OnStep;
Public Sub OnBreak(Breakp: IMsBreakpoint);
Var
CalendBreak: IMsModelCalendarBreakpoint;
DataBreak: IMsDataBreakpoint;
Begin
Debug.WriteLine("Сработала точка останова!");
Debug.WriteLine(" Ключ точки: '" + Breakp.Key.ToString + "'");
Debug.WriteLine(" Наименование точки: '" + Breakp.Name + "'");
Select Case Breakp.Kind
Case MsBreakpointKind.ModelCalendar:
Debug.WriteLine(" Точка календарная");
CalendBreak := Breakp As IMsModelCalendarBreakpoint;
If CalendBreak.IsCalendarPointFixed Then
Debug.WriteLine(" Дата срабатывания: " + CalendBreak.CalendarPoint.ToString);
Else
Debug.WriteLine(" Точка срабатывает на каждую дату расчета");
End If;
Case MsBreakpointKind.Data:
Debug.WriteLine(" Точка на значение в данных");
DataBreak := Breakp As IMsDataBreakpoint;
Debug.WriteLine(" Условие срабатывания: " + DataBreak.Condition.AsString);
End Select;
End Sub OnBreak;
End Class MCallback;
Использование данного класса для обработки событий приведено в описании IMsModelCalendarBreakpoint.CalendarPoint.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Matrix;
Imports Prognoz.Platform.Interop.Ms;
Public Class MCallback: IMSProblemCalculationCallback
Public Sub OnBreak(Breakp: IMsBreakpoint);
Var
CalendBreak: IMsModelCalendarBreakpoint;
DataBreak: IMsDataBreakpoint;
Begin
System.Diagnostics.Debug.WriteLine("Сработала точка останова!");
System.Diagnostics.Debug.WriteLine(" Ключ точки: '" + Breakp.Key.ToString() + "'");
System.Diagnostics.Debug.WriteLine(" Наименование точки: '" + Breakp.Name + "'");
Select Case Breakp.Kind
Case MsBreakpointKind.mbkModelCalendar:
System.Diagnostics.Debug.WriteLine(" Точка календарная");
CalendBreak := Breakp As IMsModelCalendarBreakpoint;
If CalendBreak.IsCalendarPointFixed Then
System.Diagnostics.Debug.WriteLine(" Дата срабатывания: " +
CalendBreak.CalendarPoint.ToString());
Else
System.Diagnostics.Debug.WriteLine(" Точка срабатывает на каждую дату расчета");
End If;
Case MsBreakpointKind.mbkData:
System.Diagnostics.Debug.WriteLine(" Точка на значение в данных");
DataBreak := Breakp As IMsDataBreakpoint;
System.Diagnostics.Debug.WriteLine(" Условие срабатывания: " +
DataBreak.Condition.AsString);
End Select;
End Sub OnBreak;
Public Sub OnMessage(Message: String);
Begin
System.Diagnostics.Debug.WriteLine(DateTime.Now.ToString() + " > " + Message);
End Sub OnMessage;
Public Sub OnError(Message: String);
Begin
End Sub OnError;
Public Sub OnFinish();
Begin
End Sub OnFinish;
Public Sub OnModelCalculation(Model: IMsModel);
Begin
End Sub OnModelCalculation;
Public Sub OnStep();
Begin
End Sub OnStep;
Public Sub OnWarning(Message: string);
Begin
End Sub OnWarning;
Public Sub OnStageStart(Stage: MsProblemCalculationStage; Data: object);
Begin
End Sub OnStageStart;
Public Sub OnStageFinish(Stage: MsProblemCalculationStage; Duration: Integer; Data: object);
Begin
End Sub OnStageFinish;
Public Sub OnBeforeSaveData(Stub: IVariableStub; Matrix: IMatrix; var ValueFlag: integer; Var Cancel: boolean);
Begin
End Sub OnBeforeSaveData;
Public Sub OnSaveData(Stub: IVariableStub; Matrix: IMatrix; ValueFlag: integer; AuditRecordKey: object);
Begin
End Sub OnSaveData;
End Class MCallback;
См. также: