public void Dispose()
{
lock (this)
{
if (iHandle == IntPtr.Zero)
return;
DisposeProxy();
iHandle = IntPtr.Zero;
}
iActionIncrement.Dispose();
iActionEchoAllowedRangeUint.Dispose();
iActionDecrement.Dispose();
iActionToggle.Dispose();
iActionEchoString.Dispose();
iActionEchoAllowedValueString.Dispose();
iActionEchoBinary.Dispose();
iActionSetUint.Dispose();
iActionGetUint.Dispose();
iActionSetInt.Dispose();
iActionGetInt.Dispose();
iActionSetBool.Dispose();
iActionGetBool.Dispose();
iActionSetMultiple.Dispose();
iActionGetMultiple.Dispose();
iActionSetString.Dispose();
iActionGetString.Dispose();
iActionSetBinary.Dispose();
iActionGetBinary.Dispose();
iActionToggleBool.Dispose();
iActionWriteFile.Dispose();
iActionShutdown.Dispose();
iVarUint.Dispose();
iVarInt.Dispose();
iVarBool.Dispose();
iVarStr.Dispose();
iVarBin.Dispose();
}
private static void SubscriptionThread(object aArgs) { ThreadArgs args = (ThreadArgs)aArgs; Semaphore sem = new Semaphore(0, 1); do { CpProxyOpenhomeOrgTestBasic1 proxy = new CpProxyOpenhomeOrgTestBasic1(args.Device); proxy.SetPropertyChanged(() => sem.Release()); proxy.Subscribe(); sem.WaitOne(); proxy.Dispose(); } while (args.IncrementCount()); }