private async void Register(object parameter) { Registering = true; ResultVisibility = Visibility.Collapsed; var passwordBox = parameter as PasswordBox; switch (CheckInputData(Email, passwordBox.Password)) { case CheckInputDataResult.PasswordTooShort: await CustomDialog.UserRegisterPasswordLengthError(); Registering = false; return; case CheckInputDataResult.EmailTooShort: case CheckInputDataResult.EmailTooLong: await CustomDialog.UserRegisterEmailLengthError(); Registering = false; return; } (bool res, string ip, string port) = await CustomIO.GetIpAndPort(); if (res == false) { // 一応ここでもチェックする await CustomDialog.ServerSettingLoadError(); PageStack.Push(page.GetType()); page.Frame.Navigate(typeof(ServerSettingPage), PageStack); Registering = false; return; } Communication tcp = new Communication(); var stat = await tcp.ConnectAndTest(ip, port); if (stat != Communication.TcpError.NoError) { await CustomDialog.ServerConnectError(); tcp.Disconnect(); Registering = false; return; } var hash = CalcHash.Sha256(passwordBox.Password); await tcp.SendMessageAsync(tcp.GetTcpCommand(Communication.TcpCommandNumber.CmdAddUser)); Communication.TcpStatus comStat; do { var resMsg = await tcp.ReceiveMessageAsync(); comStat = tcp.GetStatus(resMsg); switch (comStat) { case Communication.TcpStatus.StatRequestHash: await tcp.SendMessageAsync(hash); break; case Communication.TcpStatus.StatRequestEmail: await tcp.SendMessageAsync(Email); break; case Communication.TcpStatus.StatFIN: break; case Communication.TcpStatus.StatHashConflict: await CustomDialog.UserRegisterHashConflictError(); tcp.Disconnect(); Registering = false; return; default: await CustomDialog.UnknownError(); tcp.Disconnect(); Registering = false; return; } } while (comStat != Communication.TcpStatus.StatFIN); ResultVisibility = Visibility.Visible; passwordBox.Password = ""; Email = ""; await CustomDialog.UserRegisterComplete(); tcp.Disconnect(); Registering = false; }