Jump to content
wllf

Problema com reinicialização do Windows Server em programa Windows For

Recommended Posts

Boa noite pessoal, desenvolvi um sistema multi thread com C# (windows form) que trabalha 24 x 7 importando dados de arquivos XMLs previamente agendados, o programa roda perfeitamente sem problemas.

 

Esse sistema está instalado em um serviço cloud com Windows Server 2008 R2, ele roda praticamente 360 dias por ano e quando acontece do cloud "cair" (pelo menos 2 vezes por mês) então é reiniciado o Windows Server.

 

Guardo o status da thread que está sendo executada em banco de dados, mas quando o servidor é reiniciado essa importação fica "morta" porém em aberto no banco de dados.

 

Minha dúvida é, tem como gerar uma exception ou detectar essa reinicialização "forçada" do servidor?

 

 

Share this post


Link to post
Share on other sites

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By calves_oliveira
      Pessoal, não tenho conhecimento em Thread e em Timer mas consegui criar esses dois métodos porém está com um erro e não consigo resolver, a idéia é o seguinte: um classe manda uma jlabel para o método mostraLabel e ele chama o outro método desizaLabel os dois metodos abaixo vai apresentar a mensagem durante 3 segundos e dois deslizar para sair da tela.
      Sei que tem um erro no loop do metodo deslizaLabel pois ele esta com loop infinito mas não consigo tirar… quero que ao jlabel deslizar até o fim do form ele finalize o Thread.
      e também se alguém tiver alguma sugestão de como otimizar esse processo será bem vindo.
      public void mostraLabel(JLabel lbl) { ActionListener action = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { tempo.stop(); deslizaLabel(lbl); } }; tempo = new Timer(3000, action); tempo.start(); } private void deslizaLabel(JLabel lbl){ new Thread(){ @Override public void run(){ int x = 0; int y = lbl.getLocation().y; while(true){ x++; if(x > lbl.getWidth()){ this.stop(); } lbl.setLocation(x,y); try { sleep(10); } catch (InterruptedException ex) { } } } }.start();}  
    • By rogerss_7
      Pessoal, estou participando do desenvolvimento de uma ferramenta com a minha equipe que fará, entre outras, coisas automatizadas por serviços.
       
      Neste contexto eu comecei a notar que algumas estratégias poderiam ser diferentes, como por exemplo processamento paralelo, coisa esta que não está acontecendo.
       
      Vou tentar dar exemplos sem poder mostrar trechos de código reais, pois existem contratos de confidencialidade que poderiam nos levar a multas ou rescisão, acho que vocês entenderão.
       
      1 - Suponha que eu tenha X usuários (logins);
      2 - Pra cada usuário eu tenho que verificar se tem e-mails pra enviar ou arquivos pra processar, entre outros etc.;
       
      // Implementação hipotética
      1 - Existe uma List<Logins> que é iterada por um foreach básico;
      2 - Dentro deste foreach são chamadas as ações que podem acontecer pra cada usuário, mais ou menos assim:
      foreach (var login in logins) {     if (!await _servicoLoginInjetado.LogIn(login))     {         continue;     }     await _servicoLoginInjetado.MandarEmail();     await _servicoLoginInjetado.ProcessarArquivos();     await _servicoLoginInjetado.FazerOutraCoisa(); } É possível notar que existe uma predisposição para async, porém o código não é nada performático, pois itera um a um, não existe paralelismo.
       
      As informações do login (logado) ficam internamente no objeto retornante de _servicoLoginInjetado ... talvez isto também esteja errado.
       
      Gostaria de trocar experiências de possíveis melhorias com vocês.
    • By Mayara Andres
      Olá, preciso implementar um código java usando threads, como o anunciado da atividade pede: 
       
      "O trabalho consiste em alterar o código que busca valores dentro de um vetor (disponível no blackboard) de forma a criar N threads de acordo com a vontade do usuário (ler o número de threads que o usuário deseja criar) e buscar um valor no vetor (apenas 1, também inserido pelo usuário) de forma paralela, ou seja, cada thread criada deve procurar por um região diferente do vetor. Ao final da execução mostre qual foi a thread que encontrou o valor."
       
      PS: EU SÓ QUERO SABER POR ONDE EU COMEÇO, A LÓGICA EU ENTENDI, SÓ NÃO SEI COMO FAZER. 

      classe thread_busca
       
      package trabalho_thread; import java.util.logging.Level; import java.util.logging.Logger; class ThreadBusca extends Thread { private int vetor[]; private int numeroProcurar; public ThreadBusca(int[] vet, int numeroProcurar) { this.vetor = vet; this.numeroProcurar = numeroProcurar; } @Override public void run() { for (int i = 0; i < vetor.length; i++) { if (vetor[i] == numeroProcurar) { System.out.println("Indice de "+numeroProcurar+" eh "+i); return; } try { Thread.sleep(10); } catch (InterruptedException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } } System.out.println("Indice de "+numeroProcurar+" eh -1"); } } classe main
      package trabalho_thread; import java.util.Arrays; import java.util.Random; import javax.swing.JOptionPane; public class Main { public static void main(String[] args) { int vet[] = new int[200]; Random random = new Random(); for(int i=0;i<200;i++){ vet[i] = random.nextInt(4999)+1; } System.out.println(Arrays.toString(vet)); int numero=-1; do{ numero = Integer.parseInt(JOptionPane.showInputDialog("Numero a pesquisar:")); new ThreadBusca(vet, numero).start(); }while(numero>0); } }  
    • By rafaelsouzab
      Boa noite,
       
      Gostaria de tirar uma duvida, detalhe, estou trabalhando com c# e windows form.
      tenho um list box que é atualizado através de um timer a cada segundo com informações que são inseridas no banco de dados, vamos supor que um usuário no sistema esta logado, logo quando ele inserir os dados na tabela atualize no listbox do outro usuário, estou fazendo isso por um timer, porem percebi que não é a melhor forma para obter performance na aplicação pois o timer ficara executando a todo momento e isso pode prejudicar a aplicação caso um dia essa tabela venha a ter muitos dados, o que eu gostaria de saber e se tem alguma outra forma mais eficiente e mais fácil de se atualizar automaticamente os dados dessa listbox para o usuário, mesmo que utilize um timer mas que esse timer funcione de forma eficiente.
    • By Brand00wn
      Boa tarde cavalheiros!! Não sei se estou no lugar certo para perguntar, mas espero que me ajudem.
       
      Comecei a trabalhar com C# e Windows Form (Visual Studio) há pouco tempo e estou trabalhando agora em um Sistema de Agendamento de Salas pra instituição em que trabalho. Para isso eu preciso de um calendário no qual o usuário possa marcar várias datas ao mesmo tempo, assim como mostrar as datas já vagas em seus respectivos horário... Algo parecido. Se souberem como me ajudar já é meio caminho andado, só travei nessa parte. 
       
      Aguardo salvadores!! Abraços!!
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.