public int ModifyGroup()
{
m_actualSamplingInterval = 0;
int localeId = m_server.LocaleId;
GCHandle hSamplingInterval = GCHandle.Alloc(m_samplingInterval, GCHandleType.Pinned);
GCHandle hDeadband = GCHandle.Alloc(m_deadband, GCHandleType.Pinned);
string methodName = "IOPCGroupStateMgt.SetState";
try
{
IOPCGroupStateMgt server = BeginComCall<IOPCGroupStateMgt>(methodName, true);
server.SetState(
hSamplingInterval.AddrOfPinnedObject(),
out m_actualSamplingInterval,
IntPtr.Zero,
IntPtr.Zero,
hDeadband.AddrOfPinnedObject(),
IntPtr.Zero,
IntPtr.Zero);
/*
Utils.Trace(
"Group {0} Modified({4}) {1}/{2}ms {3}%",
m_clientHandle,
m_samplingInterval,
m_actualSamplingInterval,
m_deadband,
m_items.Count);
*/
return ResultIds.S_OK;
}
catch (Exception e)
{
ComUtils.TraceComError(e, methodName);
return Marshal.GetHRForException(e);
}
finally
{
EndComCall(methodName);
hSamplingInterval.Free();
hDeadband.Free();
}
}