public void Send(ChatMessage cm) { List<IClientFunctions> subscribersToDelete = new List<IClientFunctions>(); IClientFunctions callback = OperationContext.Current.GetCallbackChannel<IClientFunctions>(); foreach (IClientFunctions client in subscribers) { try { client.ShowMessage(cm.User + ": " + cm.Message); } catch (Exception e) { subscribersToDelete.Add(client); } } foreach (IClientFunctions client in subscribersToDelete) { if (subscribers.Contains(client)) { subscribers.Remove(client); } } }
private void button2_Click(object sender, RoutedEventArgs e) { if (client.State == CommunicationState.Opened) { ChatMessage cm = new ChatMessage(); cm.Message = textBox2.Text; cm.TimeStamp = DateTime.Today; //cm.User = new ChatUser() { Username = "******" }; client.Send(cm); } else { ShowMessage("Nicht eingeloggt!"); } }
public void Send(ChatMessage cm) { List<IChatUser> subscribersToDelete = new List<IChatUser>(); IChatUser callback = OperationContext.Current.GetCallbackChannel<IChatUser>(); foreach (IChatUser client in ConnectedUsers) { try { client.ShowMessage(cm); } catch (Exception e) { subscribersToDelete.Add(client); } } foreach (IChatUser client in subscribersToDelete) { User u = Users.SingleOrDefault(x => x.Callback == client); if (ConnectedUsers.Contains(client)) { ConnectedUsers.Remove(client); Users.Remove(u); } } }