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.
Imports System;
Imports Prognoz.Platform.Interop.Ms;
Public Class MCallback: Object, IMsProblemCalculationCallback
Public Sub OnError(Message: String);
Begin
End Sub OnError;
Public Sub OnFinish();
Begin
End Sub OnFinish;
Public Sub OnMessage(Message: String);
Begin
System.Diagnostics.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 OnWarning(Message: string);
Begin
End Sub OnWarning;
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;
End Class MCallback;
Использование данного класса для обработки событий приведено в описании IMsModelCalendarBreakpoint.CalendarPoint.
См. также: