VariableBulkChange Verwendung der Parameter

VariableBulkChange Verwendung der Parameter

Hallo;
ich nutze das VariableBulkChange() Event in C++ und es stellt sich mir die Frage, ob der u.a Code richtig sein kann oder nicht.
Genau genommen frage ich mich, ob der Zugriff auf IVariablePtr->GetValue(), IVariablePtr->GetStatusValue(), IVariablePtr->GetStatusExtValue() und IVariablePtr->GetLastUpdateTime() die selben Werte zurückliefern wie ein Zugriff auf die ebenfalls dem Event übergebenen entsprechenden Feldelemente (Values, LoStates, HighStates, Times).
Wird also das Variablen-Objekt vor Aufruf des Events schon aktualisiert oder nicht?
Wenn ja, warum werden dann diese (redundanten) Informationen zusätzlich an das Event übergeben?
void CZenonInterface::OnBulkVariableChanged( COleVariant& Variables, const COleVariant& /*PvIDs*/, const COleVariant& /*Values*/, const COleVariant& /*LoStates*/, const COleVariant& /*HiStates*/, const COleVariant& /*Times*/ ) {
if (Variables.vt!=VT_ERROR) {
COleSafeArray saVariables;
saVariables.Attach(Variables);
// Grenzwerte abholen
long lower=0, upper=0;
saVariables.GetLBound(1, &lower);
saVariables.GetUBound(1, &upper);
if (saVariables.GetElemSize()>0) {
zenOn::IVariablePtr Var;
for (long i=lower; i<=upper; i++) {
saVariables.GetElement(&i, &Var);

std::string TagName([B]);
// Wandeln der Datumsangabe
COleDateTime Date([B]);
[B]

...
}
}
saVariables.Detach();
} else {
FILE_LOG(logERROR) << "Unable to get changed values: " << GetLastErrorMessage(Variables.scode);
}
}

Darf eventuell der Zugriff auf das Variablenobjekt innerhalb des Events nicht erfolgen (Multithreading) ?
Danke im Voraus

This is a migrated post! Originally posted on 12.06.2012 by user andyyyy. Please be aware that information can be outdated.