Параллельный доступ к статическому члену в .NET

У меня есть класс, содержащий статическую коллекцию для хранения зарегистрированных пользователей в приложении ASP.NET MVC. Я просто хочу знать, является ли приведенный ниже код потокобезопасным или нет. Нужно ли блокировать код всякий раз, когда я добавляю или удаляю элемент в коллекцию onlineUsers.

public class OnlineUsers
{
    private static List<string> onlineUsers = new List<string>();
    public static EventHandler<string> OnUserAdded;
    public static EventHandler<string> OnUserRemoved;

    private OnlineUsers()
    {
    }

    static OnlineUsers()
    {
    }

    public static int NoOfOnlineUsers
    {
        get
        {
            return onlineUsers.Count;
        }
    }

    public static List<string> GetUsers()
    {
        return onlineUsers;
    }

    public static void AddUser(string userName)
    {
        if (!onlineUsers.Contains(userName))
        {
            onlineUsers.Add(userName);

            if (OnUserAdded != null)
                OnUserAdded(null, userName);
        }
    }

    public static void RemoveUser(string userName)
    {
        if (onlineUsers.Contains(userName))
        {
            onlineUsers.Remove(userName);

            if (OnUserRemoved != null)
                OnUserRemoved(null, userName);
        }
    }
}
5
задан VJAI 18 July 2011 в 05:59
поделиться