internal static void AddProvider(EventProviderBase newProvider) { lock (EventProviderStreamsLock) { if (s_providers == null) { s_providers = new List <WeakReference>(2); } int count = -1; if ((s_providers.Count % 0x40) == 0x3f) { for (int i = 0; i < s_providers.Count; i++) { WeakReference reference = s_providers[i]; if (!reference.IsAlive) { count = i; reference.Target = newProvider; break; } } } if (count < 0) { count = s_providers.Count; s_providers.Add(new WeakReference(newProvider)); } newProvider.m_id = count; for (EventProviderDataStream stream = s_Streams; stream != null; stream = stream.m_Next) { newProvider.m_OutputStreams = new EventProviderDataStream(stream.m_Callback, newProvider.m_OutputStreams, new bool[newProvider.EventIdLimit], stream); } EventHandler <EventProviderCreatedEventArgs> handler = s_EventProviderCreated; if (handler != null) { EventProviderCreatedEventArgs e = new EventProviderCreatedEventArgs { Provider = newProvider }; handler(null, e); } } }
internal static void AddProvider(EventProviderBase newProvider) { lock (EventProviderStreamsLock) { if (s_providers == null) { s_providers = new List<WeakReference>(2); } int count = -1; if ((s_providers.Count % 0x40) == 0x3f) { for (int i = 0; i < s_providers.Count; i++) { WeakReference reference = s_providers[i]; if (!reference.IsAlive) { count = i; reference.Target = newProvider; break; } } } if (count < 0) { count = s_providers.Count; s_providers.Add(new WeakReference(newProvider)); } newProvider.m_id = count; for (EventProviderDataStream stream = s_Streams; stream != null; stream = stream.m_Next) { newProvider.m_OutputStreams = new EventProviderDataStream(stream.m_Callback, newProvider.m_OutputStreams, new bool[newProvider.EventIdLimit], stream); } EventHandler<EventProviderCreatedEventArgs> handler = s_EventProviderCreated; if (handler != null) { EventProviderCreatedEventArgs e = new EventProviderCreatedEventArgs { Provider = newProvider }; handler(null, e); } } }