public DataItem addItem(string aTagName) { if (String.IsNullOrWhiteSpace(aTagName)) { throw new ArgumentException("Item TagName is empty. "); } DataItem lItem = new DataItem(); lItem.mTagName = aTagName; lItem.mConnection = this; if (Connected) { try { lItem.setValue(mPLC.Read(aTagName)); lItem.mAccess = EAccess.READ_WRITE; } catch (SimulationRuntimeException lExc) { throw new InvalidOperationException(ErrorCodeMessage(lExc.RuntimeErrorCode), lExc); } } mItemListLock.EnterWriteLock(); //======================================== try { mItemList.Add(lItem); mItemListChanged = true; } finally { //======================================== mItemListLock.ExitWriteLock(); } ConnectionState += new EventHandler(lItem.onConnectionStateChanged); lItem.raisePropertiesChanged(); lItem.updateValue(); return(lItem); }