Ir para o conteúdo
sYnced

[Resolvido] Ciclo infinito

Mensagens Recomendadas

sYnced    1
sYnced

Boa noite caro P@P,

É o seguinte, eu primeiramente optei por um while(true) mas vi que usava muito CPU e então o programa não deixava abrir a janela (pois minimizava automáticamente).

Depois de alguma pesquisa, encontrei um método, (que vou publicar mais abaixo), este método já deixa máximizar o form, mas nada mais.

Gostaria de saber como com o ciclo infinito activo ele pode na mesma mexer no form normalmente.

O Código é o seguinte:

EventWaitHandle waithandler = new EventWaitHandle(false, EventResetMode.AutoReset, Guid.NewGuid().ToString()); do
	 {
		 waithandler.WaitOne(TimeSpan.FromSeconds(2));
		 ciclos();
	 } while (true);

Obrigado.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pikax    159
pikax

Nao deves estar a deixar a form processar as mensagens do windows, e' por isso que nao esta' a funcionar.

porque que nao crias um timer, assim ja' deixas o form processar as mensagens(aka ja' podes fazer "tudo" com a form)


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
sYnced    1
sYnced

Podes dar me só um exemplo como fazer isso ? é que o form que quero mexer abre outro com ShowDialog, e o que é aberto é que faz os ciclos.

Caso queiras mais bocados de código avisa por favor.

Obrigado.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pikax    159
pikax
public class cTeste//...
/*
....
*/
Timer m_timer = new Timer();

public cTeste()
{
m_timer.Tick+=m_timer_Tick;
m_timer.Interval = 2*1000;//2segundos
m_timer.Enable = true;
}

void m_timer_Tick(object sender, EventArgs e)
{
 Ciclos();
}
//....

Pode nao funcionar, depende muito do que o que a funcao Ciclos ira' fazer


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
sYnced    1
sYnced

Eu quero a função ciclos sempre a funcionar, ou seja infinitamente... Apenas acede à base de dados e a ficheiros no PC a função ciclos.

Editado por sYnced

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pikax    159
pikax

tens que ver o peso que a funcao tera', nao seria melhor mandar para outra thread, para teres a thread principal a funcionar correctamente?

Mas experimenta da forma que disse com o timer, em principio deve-te fazer o que queres.


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pikax    159
pikax

A forma de pores um while(true) numa thread, ou um timer, funciona para o que tu queres. basta implementares e testar.


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pikax    159
pikax

O timer e' bastante facil, basicamente defines o Intervalo(em milisegundos) que ele vai ser chamado Interval, depois tens que atribuir o evento Tick que e' chamado apos o timer chegar ao tempo no Interval.

no metodo do Tick, basicamente basta chamares o teu metodo.

Ja' agora, nao me recordo se tens que por o timer outra vez a enable apos ele chamar o evento.


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
sYnced    1
sYnced

Boa tarde, vê esta imagem, está me a dar um pequeno erro.

x0s6jm.png

Cumprimentos. e desde já muito obrigado

Bem obrigado já descobri, é Enabled. Vou testar agora mesmo, 1000 Obrigados :)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pikax    159
pikax

Desculpa, e' o que da' usar o editor daqui do forum :D

Verifica se no metodo Tick o Enable esta' a true, se nao estiver, mete-o a true.


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
sYnced    1
sYnced

Já fiz, funcionou, como disse acima 1000 Obrigados, fizeste me perceber algo mais sobre ciclos infinitos, nem sempre são precisos whiles :)

Partilhar esta mensagem


Link 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.