Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

kelsch.cristiano

Como fazer uma interrupção no programa de 0,1 Segundo

Mensagens Recomendadas

kelsch.cristiano

Preciso fazer uma interrupção no meu programa de 0,1 segundo mas não quero utilizar thred.sleep(10);

hoje meu código é esse, mas acho que ocupa mta memória.

private void LogicaDoPrograma(object state)
        {
            while (ficarEmLoop)
            {
                if (File.Exists(arquivo))               
                    //Minha Lógica
                else
                 Thread.Sleep(50);     
            }            
        }

não queria mais utilizar o while, tem como?

esse meu programa tem que ter um loop infinito só que sem while eu qro.

se não der queria saber como fazer a interrupção.

Abraço.


Att Cristiano Kelsch

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Ziwdon

Boas kelsch.cristiano,

Antes de mais dá uma olhadela neste TÓPICO.

Quanto à tua questão...não percebi muito bem o que pretendes.

- Queres fazer uma interrupção mas não queres usar Thread.Sleep. Alguma razão porque não queiras usar Thread.Sleep?

- Queres ter um loop sem While. Alguma razão porque não queiras usar While para o loop?

Cumps


"Rejoice not against me, O mine enemy: when I fall, I shall arise; when I sit in darkness, the LORD shall be a light unto me." - Micah 7:8 (KJV)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
kelsch.cristiano

É que assim, não quero utilizar while para não deixar pesado meu programa queria utilizar tudo com IF

esse é meu código hoje,

        string arquivo = "C:\\Temp\\RequisicaoEcf.txt";
        
        public Form1()
        {
            InitializeComponent();
            b_Stop.Enabled = false;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            lbl_Executando.Visible = false;
            lbl_Parado.Visible = true;
            b_Play.Enabled = true;
            b_Stop.Enabled = false;
            ficarEmLoop = false;
           
        }

        private void b_Play_Click(object sender, EventArgs e)
        {
            ficarEmLoop = true;               //Seta o Loop no programa
            lbl_Executando.Visible = true;
            lbl_Parado.Visible = false;
            b_Play.Enabled = false;
            b_Stop.Enabled = true;
            ThreadPool.QueueUserWorkItem(LogicaDoPrograma);            
        }

        private void b_Stop_Click(object sender, EventArgs e)
        {
            ficarEmLoop = false;              // Para o loop no programa
            lbl_Executando.Visible = false;
            lbl_Parado.Visible = true;
            b_Play.Enabled = true;
            b_Stop.Enabled = false;
            MessageBox.Show("'Ds Monitor' foi interrompido pelo usuário.");
        }

        private void LogicaDoPrograma(object state)
        {
            while (ficarEmLoop)
            {
                if (File.Exists(arquivo))               
                    //ImpressoraBematech.Daruma32.Daruma_FI_LeituraX();
                    MessageBox.Show("Encontrou Arquivo");
                else
                 Thread.Sleep(50);
                
                
            }            
        }

coloca um exemplo de como utilizar a interrupção em vez do  thread.sleep(50);

Abraço


Att Cristiano Kelsch

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
DVD

Pah threading é algo complicado de explicar no meu ver é dos ramos mais complicados da programação sugiro-te uma vista de olhos pelo livro Java concurrency in practice e CLR via C# tem lá coisas para iniciados e graudos sobre a matéria.

Agora que vi o teu exemplo o que precisas e um background worker mais nada lool, e teres isso em while não fica mais pesado se é isso que realmente queres fazer.

Senão ficares satisfeito com a resposta peço-te que sejas mais explicito no que queres.

Cumpz

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
RA

Boas...

O DVD tem razão. Threading é lixado. Se tiveres paciência e curiosidade podes dar uma olhadela a este link: http://www.albahari.com/threading/. Aborda bastantes coisas sobre threading, entre elas: O ThreadPool, o BackgroundWorkder, a cena dos locks, o tal AutoResetEvent e outros tópicos que já foram mencionados. Tem até uma versão PDF aqui.

Quanto à implementação com o while, mais uma vez concordo com o DVD. Já qto à escolha do BackgroundWorker sobre a ThreadPool, acho que o efeito é o mesmo.

Sobre a interpretação do que pedes, também não compreendi bem quando dizes, por exemplo:

"não quero utilizar while para não deixar pesado meu programa queria utilizar tudo com IF".

Tenta elaborar melhor a tua ideia. Talvez se colocares um exemplo em pseudocódigo (ou alguma aproximação a isso que se entenda bem) te consigas expressar melhor.

Cmpts.


"Some men see things as they are and say why - I dream things that never were and say why not." - George Bernard Shaw

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
kelsch.cristiano

Bom, no primeiro momento vou deixar com while até mesmo pq isso que eu qro é mais pra ver se aprendo um pouco alguma coisa meio diferente, mas isso vai com tempo para aprender,

Uma coisa que queria era criar uma DLL no C# tem como neh?

Abraço


Att Cristiano Kelsch

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
RA

Boas...

Sobre a DLL em C#, uma pequena brincadeira: http://tinyurl.com/28rzyxg  :D   Hehehe! Adoro esse site:)

Agora a sério. Isso é muito simples. Para criar a DLL fazes: File - New - Project. Depois escolhes a opção "Class Library". A única diferença que vais encontrar entre esse projecto e um projecto "Console Application" é que a Class Library não tem o método "main". Aí tens que criar as tuas classes, compilas e depois só tens adicionar ao teu projecto principal. Para adicionares ao teu projecto principal (e isto é apenas um exemplo de como o fazer) vais a "Project - Add Reference". Depois escolhes a tab Browse na janela que aparece e vais buscar a DLL que criaste no outro projecto.

Depois disso podes usar na boa as classes que criaste na tua DLL. Basta que conheças o "fully qualified name" (Ou seja, o nome completo em conjunto com o namespace) das classes que criaste nessa mesma DLL.

Só uma nota. Esta questão já foge um pouco ao título que criaste. Se calhar devias ter aberto um novo tópico aqui no fórum.

Cheers.


"Some men see things as they are and say why - I dream things that never were and say why not." - George Bernard Shaw

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
kelsch.cristiano

Vlw pelas dicas, sou meio novo nesse mundo de C#, quando mudar de assunto criarei um novo tópico,

abraços


Att Cristiano Kelsch

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
kelsch.cristiano

PEssoal pq quando eu entro nas duvidas meu usuario está perdendo o logoff?

não consigo postar nenhum tópico novo, estou precisando tirar uma duvida e qro criar um novo.

abraço


Att Cristiano Kelsch

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.