public static ComEventSink FromRuntimeCallableWrapper(object rcw, Guid sourceIid, bool createIfNotFound) { List<ComEventSink> comEventSinks = ComEventSinksContainer.FromRuntimeCallableWrapper(rcw, createIfNotFound); if (comEventSinks == null) { return null; } ComEventSink comEventSink = null; lock (comEventSinks) { foreach (ComEventSink sink in comEventSinks) { if (sink._sourceIid == sourceIid) { comEventSink = sink; break; } else if (sink._sourceIid == Guid.Empty) { // we found a ComEventSink object that // was previously disposed. Now we will reuse it. sink.Initialize(rcw, sourceIid); comEventSink = sink; } } if (comEventSink == null && createIfNotFound == true) { comEventSink = new ComEventSink(rcw, sourceIid); comEventSinks.Add(comEventSink); } } return comEventSink; }
public ComEventSinkProxy(ComEventSink sink, Guid sinkIid) : base(typeof(ComEventSink)) { _sink = sink; _sinkIid = sinkIid; }