public override async Task OnDisconnectedAsync(Exception exception) { if (Context.Items.ContainsKey("SessionID") && AttendedSessionList.ContainsKey(Context.Items["SessionID"].ToString())) { while (!AttendedSessionList.TryRemove(Context.Items["SessionID"].ToString(), out var value)) { await Task.Delay(1000); } await RCBrowserHub.Clients.Clients(ViewerList).SendAsync("ScreenCasterDisconnected"); } else { if (ViewerList.Count > 0) { await RCBrowserHub.Clients.Clients(ViewerList).SendAsync("Reconnecting"); await DeviceHub.Clients.Client(ServiceID).SendAsync("RestartScreenCaster", ViewerList, ServiceID, Context.ConnectionId); } } if (!string.IsNullOrWhiteSpace(MachineName) && MachineNameToSessionIDLookup.ContainsKey(MachineName)) { while (!MachineNameToSessionIDLookup.TryRemove(MachineName, out _)) { await Task.Delay(1000); } } await base.OnDisconnectedAsync(exception); }
public override async Task OnDisconnectedAsync(Exception exception) { await base.OnDisconnectedAsync(exception); if (AttendedSessionList.ContainsKey(Context.Items["SessionID"].ToString())) { while (!AttendedSessionList.TryRemove(Context.Items["SessionID"].ToString(), out var value)) { await Task.Delay(1000); } } }