private void Register(object sender, RoutedEventArgs e) { SaveLoginSettings(); LoginMessageText = string.Empty; AwaitingLoginResponse = true; Cursor = Cursors.Wait; MainWindow main = App.Current.MainWindow as MainWindow; Task.Run(() => { main.Client.Connect(address, port, CONNECT_TIMEOUT); if (!main.Client.IsConnected) { App.Current.Dispatcher.Invoke(() => { main.Client.Dispose(); loginMessageText = SERVER_UNREACHABLE; AwaitingLoginResponse = false; if (!WorkInProgress) { Cursor = Cursors.Arrow; } }); return; } RegisterAccountRequest request = new RegisterAccountRequest(username, PasswordBox.Password, main.Client.Serializer); JamPacket requestPacket = new JamPacket(Guid.Empty, Guid.Empty, RegisterAccountRequest.DATA_TYPE, request.GetBytes()); main.Client.Send(requestPacket); }); }