private void AddEvent(EventSinkCreateDelegate assign) { lock (this) { if (this._connectionPoint == null) { _connectionPointContainer.FindConnectionPoint(ref _riid, out _connectionPoint); } var eventsSinkHelper = new MSScriptControl_EventSink(); assign(eventsSinkHelper); SinkItem node = new SinkItem(); node.UnkSink = eventsSinkHelper; node.Next = _sinkHead; _connectionPoint.Advise(eventsSinkHelper, out node.Cookie); _sinkHead = node; } }