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);
         }
     }
 }