我有一个SignalR Hub子类,我保留了一个加入集线器的静态用户列表。是否需要在使用它的方法中锁定该列表,以及执行此操作的正确方法 - 这是一种正确的方法吗?
public class MessageHub : Hub
{
private static List<HubUser> users = new List<HubUser>();
public void Join(string UserName)
{
lock(users){/*some code to validate and store user*/}
}
public List<HubUser> GetOnlineUsers()
{
lock (users)
{
return users.ToList<HubUser>();
}
}
//other methods such as GetUsersCount(), IsUserOnline(string User)....
}