3.7.2   Metody

 

CancelQuery  
 

 

void CancelQuery( );

Sub CancelQuery ( )

 

Metoda CancelQuery pozwala na przerwanie wykonywanej operacji odczytu danych archiwalnych.
 

 

RegisterQueryResultEvent

 

void RegisterQueryResultEvent(ArcQueryResultEvent aFunction);

Sub RegisterQueryResultEvent(ByVal aFunction As  ArcQueryResultEvent)

 

Funkcja służy do zarejestrowania funkcji zwrotnej, która zostanie wywoływana po zakończeniu operacji odczytu danych archiwalnych. Parametr aFunction określa funkcję zwrotną – musi ona być zgodna z delegatem ArcQueryResultEvent.

delegate void ArcQueryResultEvent(IArcQueryResult aQueryResult);

Delegate Sub ArcQueryResultEvent(ByVal aQueryResult As  IArcQueryResult)

W parametrze aQueryResult do funkcji zwrotnej przekazywana jest referencja do interfejsu IArcQueryResult, w kontekście którego rejestracja została wykonana.

Funkcję oczekiwania na koniec odczytu można wyrejestrować przy pomocy metody UnregisterQueryResultEvent.

Przykład:

C#

IApplication application;

void ArcQueryFun(IArcQueryResult aQueryResult)

{

   if (aQueryResult.ResultStatus == ArcResultStatus.Error)

      application.ReportMessage(EvoMessageType.Error, "OrderArcData error: " +

                                aQueryResult.ErrorDescription);

   else

   {

      foreach (ArcVariableState v in aQueryResult.Values)

         application.ReportMessage(EvoMessageType.Error, v.TimeStamp.ToString() +

                            ": " + v.Value.ToString());

                          

   }

   application.TerminateScript(true);

}

      

public bool Initialize(string[] aParameters, IApplication aApplication)

{

   application = aApplication;

   IVariable iv = aApplication.GetVariable("A004", false);

 

   IArcQueryResult qr = iv.OrderArcData(new ArcQuery(DateTime.Today,

       DateTime.Now,"average",TimeSpan.FromMinutes(15)));

   if (qr.ResultStatus == ArcResultStatus.Error)

      aApplication.ReportMessage(EvoMessageType.Error, "OrderArcData error: " +

                                qr.ErrorDescription);

   else

     qr.RegisterQueryResultEvent(ArcQueryFun);

      

   return false;

}

                VB

 

Dim application As IApplication

Sub QueryArcFun(aQueryResult As IArcQueryResult)

            

   If (aQueryResult.ResultStatus = ArcResultStatus.Error)

      application.ReportMessage(EvoMessageType.Error, _

                        "OrderArcData error: " + aQueryResult.ErrorDescription)

   Else

      For Each v As ArcVariableState In aQueryResult.Values

         application.ReportMessage(EvoMessageType.Error, _

v.TimeStamp.ToString() + ": " + v.Value.ToString())

      Next v

   End If

   application.TerminateScript(True)

End Sub

      

Public Function Initialize(ByVal aParameters() As String, ByVal aApplication As _

IApplication) As Boolean Implements IScript.Initialize

      

   application = aApplication

   Dim iv As IVariable

   iv = aApplication.GetVariable("A004", False)

 

   Dim qr As IArcQueryResult

   qr = iv.OrderArcData(New ArcQuery(Date.Today, Date.Now, _

"average", TimeSpan.FromMinutes(15)))

            

   If (qr.ResultStatus = ArcResultStatus.Error)

      aApplication.ReportMessage(EvoMessageType.Error, _

"OrderArcData error: " + qr.ErrorDescription)

   Else

      qr.RegisterQueryResultEvent(AddressOf QueryArcFun)

   End If

   Return False

 

End Function

 

 

Przekazany w wywołaniu metody OrderArcData obiekt klasy ArcQuery powoduje odczyt 15-minutowych wartości średnich z okresu od początku dnia do chwili bieżącej. Jeżeli inicjacja  odczytu wykonała się poprawnie, to rejestrowana jest funkcja ArcQueryFun, która zostanie wykonana po zakończeniu operacji. Wewnątrz funkcji zwrotnej ArcQueryFun wykonywany jest zapis do logu komunikatów wszystkich wartości archiwalnych, które zostały zwrócone poprzez właściwość Values obiektu klasy IArcQueryResult przekazanego w wywołaniu funkcji. Następnia praca skryptu zostaje zakończona.

 


 

UnregisterQueryResultEvent

 

void UnregisterQueryResultEvent();

Sub UnregisterQueryResultEvent()

 

Wyrejestrowanie funkcji oczekującej na zakończenie operacji odczytu, która została wcześniej zarejestrowana przy pomocy funkcji RegisterQueryResultEvent.

 

 

Wait

 

bool Wait();

Function Wait() As Boolean 

 

Funkcja zawiesza wykonywanie skryptu do momentu zakończenia realizacji operacji odczytu danych archiwalnych. Funkcja ma wbudowane 5-minutowe ograniczenie czasu oczekiwania. Jeżeli dane nie zostaną odczytane w tym czasie, to funkcja zwraca wartość false.

Alternatywą dla funkcji  Wait jest użycie funkcji Sleep interfejsu IApplication połączone z monitorowaniem wartości statusu QueryResult.