D3POD Posted September 3, 2013 at 10:00 AM Report #523270 Posted September 3, 2013 at 10:00 AM Boas, criei um sistema de login que depois de ser feito correctamente os controles existentes no form de fundo ficam visíveis e o form do login desaparece. Como ainda são alguns controles o programa demora alguns segundo a carregar e ainda não tenho qualquer base de dados a funcionar, o que irá provocar uma lentidão maior pois serão 3 bases de dados a serem carregadas no load do form. O que eu queria era criar um terceiro form no processo de arranque da aplicação, depois do login, que ia aguardar que tudo estivesse pronto e que ao mesmo tempo iria conter dados do registo do software. Alguém me consegue dar alguma ajuda de como fazer isto? O que tenho encontrada na maioria é para verificação da qualidade da password e coisas assim, que não tem muito a ver com o que pretendo. Cumprimentos
brunobola Posted September 5, 2013 at 11:28 PM Report #523575 Posted September 5, 2013 at 11:28 PM Podes uma um form de espera por examplo e chamá-lo quando quiseres, exemplo: LoadingWindow loadingWindow = new LoadingWindow(); try { loadingwindow.Show(); //Main form Load..... loadingwindow.Close(); } catch (Exception ex) { MessageBox.Show("Exception EXPORT: " + ex.Message); }
D3POD Posted September 7, 2013 at 05:47 PM Author Report #523787 Posted September 7, 2013 at 05:47 PM Olá, o que eu pretendo é colocar a progressbar realmente num form, mas queria saber é como fazer com que o tempo da progressbar coincida com o tempo que a aplicação demorar a abrir o form seguinte, isto para evitar que o utilizador veja a aplicação a tremer de estar a carregar.
bioshock Posted September 7, 2013 at 05:49 PM Report #523789 Posted September 7, 2013 at 05:49 PM http://stuffpinho.com/csharp-working-with-threads/
nelsonr Posted September 7, 2013 at 08:45 PM Report #523798 Posted September 7, 2013 at 08:45 PM O que podes fazer é dividir as tarefas que tens no iniciar do teu form. Por exemplo, imagina que fazes 7 operacoes no load. Crias um form so com a progress bar e colocas o valor maximo a 7. No form que tem as 7 operacoes, logo no inicio do load abres o form que tem a progress, mostrando logo com o valor a 0 Depois de cada operação, incrementas o valor, de modo a que depois da operação final, a progressbar fique com o valor maximo. No final, escondes o form da progress e mostras o form principal.
D3POD Posted September 7, 2013 at 10:53 PM Author Report #523807 Posted September 7, 2013 at 10:53 PM É uma boa solução, mas como faço a leitura quando um dos processos terminada para que eu possa informar a progressbar que tem que aumentar valor?
nelsonr Posted September 7, 2013 at 11:20 PM Report #523808 Posted September 7, 2013 at 11:20 PM Isso depende exactamente do que estas a fazer. Que operações são essas que fazes no inicio do form? Dizes que é carregar dados de 3 bases de dados. So ai consegues dividir a barra de progresso em 3. Depois depende exactamente dos dados que les de cada uma, para ver se da para dividir ainda mais
D3POD Posted September 8, 2013 at 06:09 PM Author Report #523842 Posted September 8, 2013 at 06:09 PM Sim, eu tenho 3 bases de dados e cada uma delas tem varias tabelas. Alem disso, tenho algumas definições que são carregadas no load do form principal e no login devido aos perfis. O problema é que ao carregar todas essas informações a aplicação apresenta uns bloqueios e ainda só tenho uma base de dados a ser carregada. A minha ideia era implementar uma progressbar onde o utilizador teria uma ideia de como está a ser carregada a informação. Só não sei como vou recolher a informação por exemplo quando alguém faz login os dados são carregados e no form principal é apresentado um resumo que é carregado de uma base de dados e que pode provocar lentidão. O que eu queria era por exemplo saber quando esse carregamento termina para informar a progressbar.
nelsonr Posted September 8, 2013 at 06:17 PM Report #523843 Posted September 8, 2013 at 06:17 PM Se o problema é o bloqueio da janela (não conseguir mexer) enquanto faz o loading, terás então de criar uma thread e colocar lá o trabalho demorado. Para isso vê o link que o bioshok mostrou Se o problema é mostrar ao utilizar que está a fazer qualquer coisa e avançar uma barra de progresso, teras de fazer como disse no post #5 e #7
brunobola Posted September 9, 2013 at 11:36 PM Report #523948 Posted September 9, 2013 at 11:36 PM Em vez de usares threads, podes usar por exemplo background process workers que te permitem actualizar a interface sempre que pretenderes e não teres problema com crossthread exceptions, podes ver mais informação aqui:http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now