我已经制作了简单的聊天应用程序来学习一些新东西,我现在要做的是添加当前登录聊天的用户列表。 所以我这样做了:
public ObservableCollection<User> GetUserList()
{
ObservableCollection<User> users = new ObservableCollection<User>();
IEnumerable<User> userEnu;
userEnu = from u in _clientDic
select new User
{
UserName = u.Key
};
foreach (User user in userEnu)
{
users.Add(user);
}
IEnumerable<IDuplexClient> clients;
clients = from p in _clientDic
select p.Value;
foreach (IDuplexClient item in clients)
{
item.DisplayUserList(users);
}
return users;
}
还有一个DataConctract,它同时响应用户。 无论如何。此方法获取字典中存在的所有用户并将其放入ObservableCollection。
我想要做的是将数据从此集合推送到用户,如果它发生更改(用户登录或注销)。
到目前为止,我只能通过调用
手动从服务器中提取数据_client.GetUserListAsync()
手动。通过silverlight应用程序中的按钮按钮。 但这不是我使用双工连接,强制用户(或客户端应用程序)进行服务器定期调用的原因,它会检查是否有新数据。我希望服务器将任何新数据推送到客户端。
[ServiceContract]
public interface IDuplexClient
{
[OperationContract(IsOneWay = true)]
void DiplayMessage(string message);
[OperationContract(IsOneWay = true)]
void DisplayUserList(ObservableCollection<User> userColl);
}
这是服务合同。老实说,我真的不知道这是否相关,但我发布以防万一。