none
Com Thread no evento Load, não abre form inicial RRS feed

  • Pergunta

  • Boa tarde,

    Quando executo esta Thread no evento load, meu form principal não abre. Não consegui achar o problema de forma alguma, aqui vai o código:

    public partial class Form1 : Form
        {
            MydllClassLibrary.Mydll mydll = new  MydllClassLibrary.Mydll();
            private Thread trd;
    
           
            public delegate void SetText(string valor);
    
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
    
                mydll.initialize("");
    
                trd = new Thread(ThreadTask());
                trd.IsBackground = true;
                trd.Start();
            }
            
    
            private ThreadStart ThreadTask()
            {
                int stp = 0;
                string evento = "";
    
                do
                {
                    if (!chkProgramacao.Checked &&  mydll.isConnected())
                    {
                        stp += 10;
                        
                        if (stp == 10000)
                        {
                            evento =  mydll.getEvent(500);
                            if (evento.Length > 0)
                            {
                                this.SetText(evento);
                            }
                            stp = 0;
                        }
    
                    }
    
                    evento = "";
    
                    Thread.Sleep(100);
                } while (true);
    
    
            }
        }

    terça-feira, 29 de outubro de 2013 21:53

Respostas

  • Cara,

    Nessa linha:

     trd = new Thread(ThreadTask());


    Tente dessa forma:

     trd = new Thread(ThreadTask);

    O seu código está um pouco confuso, mas vê  se resolve o seu problema. Caso não, debuga a aplicação para ver se é gerada alguma exception. 


    Atenciosamente, Samuel dos Anjos


    terça-feira, 29 de outubro de 2013 23:58

Todas as Respostas

  • Cara,

    Nessa linha:

     trd = new Thread(ThreadTask());


    Tente dessa forma:

     trd = new Thread(ThreadTask);

    O seu código está um pouco confuso, mas vê  se resolve o seu problema. Caso não, debuga a aplicação para ver se é gerada alguma exception. 


    Atenciosamente, Samuel dos Anjos


    terça-feira, 29 de outubro de 2013 23:58
  • Grande Samuel,

    Com essa alteração que vc sugeriu e alterando o tipo do objeto para void deu certo.

    private ThreadStart ThreadTask()

    private Void ThreadTask()

    Valeu!

    quarta-feira, 30 de outubro de 2013 00:25