static Counter CreateCounter(string name, string category, bool logMessages, string id, bool isTimer)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name", "Counters must have a Name");
            }

            InitializeHandlers();

            if (category == null)
            {
                category = "Global";
            }

            lock (counters) {
                CounterCategory cat = GetCategory(category);
                if (cat == null)
                {
                    cat = new CounterCategory(category);
                    categories.Add(cat);
                }

                Counter c = isTimer ? new TimerCounter(name, cat) : new Counter(name, cat);
                c.Id          = id;
                c.LogMessages = logMessages;
                cat.AddCounter(c);

                Counter old;
                if (counters.TryGetValue(name, out old))
                {
                    old.Disposed = true;
                }
                counters [name] = c;
                if (!string.IsNullOrEmpty(id))
                {
                    countersByID [id] = c;
                }

                foreach (var h in handlers)
                {
                    if (h.SupportsCounter(c))
                    {
                        c.Handlers.Add(h);
                    }
                }
                c.UpdateStatus();

                return(c);
            }
        }
Пример #2
0
        static Counter CreateCounter(string name, string category, bool logMessages, string id, bool isTimer)
        {
            InitializeHandlers();

            if (category == null)
            {
                category = "Global";
            }

            lock (counters) {
                CounterCategory cat = GetCategory(category);
                if (cat == null)
                {
                    cat = new CounterCategory(category);
                    categories.Add(cat);
                }

                Counter c = isTimer ? new TimerCounter(name, cat) : new Counter(name, cat);
                c.Id          = id;
                c.LogMessages = logMessages;
                cat.AddCounter(c);

                Counter old;
                if (counters.TryGetValue(name, out old))
                {
                    old.Disposed = true;
                }
                counters [name] = c;

                foreach (var h in handlers)
                {
                    if (h.SupportsCounter(c))
                    {
                        c.Handlers.Add(h);
                    }
                }
                c.UpdateStatus();

                return(c);
            }
        }