//Acao disparada pelo botao de login //Totalmente assicrono private async Task <AdminDTO> doWorkAsync(string logon, string senha) { AdminDTO admin = new AdminDTO(logon, senha); bool result = await WaitEntityFramework.StartTask <Package>(TaskEF()); //aqui tenho um contexto rodando assincrono if (result) { //ja iniciou nao precisa roda a barra denovo //isso impede que outro contexto seja iniciado this._isInit = true; if (admin.IsAdmin == false) { //recria this._xFrmLogin = new XFrmLogin(this); //nao feche essa janela ate logar corretamente this._xFrmLogin.DisposeOnLogin = false; //marque false //mesmo que o form marque true //no banco de dados foi negado o acesso this._xFrmLogin.IsLogin = false; //agora nem esconde esse form mais //fica amarrado ate logar corretamente this._xFrmLogin.IsHideOnLogin = false; MessageBoxBlack.Show("Usuário \"" + logon + "\" ou senha inválido(s).", "Atenção"); } else { this._xFrmLogin.IsLogin = true; //agora sim feche essa janela this._xFrmLogin.DisposeOnLogin = true; } } return(admin); }
/// <summary> /// Aguarde o fim da tarefa e invoca o menu se o contexto foi iniciado e o usuário logado corretamente /// </summary> private void waitRun() { try { _taskLogin.Wait(); } catch (Exception ex) { string msg = "Ocorreu um erro não identificado ao realizar login."; LoggerUtilIts.GenerateLogs(ex, msg); Environment.Exit(0); Application.Exit(); throw ex; } //se nao conseguiu logar deu ruim if (this._xFrmLogin.IsLogin == false) { //faz tudo denovo mas dessa vez fica amarrado //ou seja nao vai fechar o form ate logar corretamente this._xFrmLogin.ShowDialog(); } Console.WriteLine("Task Done"); AdminDTO admin = _taskLogin.Result; //se algum deles existe if (admin != null) { //garante o fim da Task _taskLogin.Dispose(); //invoka a thread que amarra o menu principal Application.Run(new XFrmAdminMenu(_application)); } }
//Acao disparada pelo botao de login //Sequencialmente private AdminDTO doWork(string logon, string senha) { Console.WriteLine("Wait Entityframework initializate ..."); //aqui eu ja tenho contexto iniciado //traz um usuario indexado do banco + login no servidor AdminDTO admin = new AdminDTO(logon, senha, _application.ITSTools.Login(logon, senha)); if (admin.IsAdmin == false) { MessageBoxBlack.Show("Usuário \"" + logon + "\" não encontrado.", "Atenção"); this._xFrmLogin.BringToFront(); } else { //agora sim feche essa janela this._xFrmLogin.DisposeOnLogin = true; this._xFrmLogin.Dispose(); } return(admin); }