Wątek przeniesiony 2015-06-11 18:05 z C# i .NET przez somekind.

Pętla odznaczająca checkBox zawiesza program

0

Witam
Mam problem z pętlą w C#
Nie potrafię odznaczyć checkBoxa, przy każdej próbie program się zawiesza.

 
if (this.checkbox.Checked)
{
    for(; ;) lub while(true)
    {
       ...
    }
}

Co jest nie tak?

0

Kod uruchamiasz w tym samym wątku, w którym jest uruchomiony interfejs, dlatego uruchomienie pętli blokuje interfejs.

Aby uzyskać zamierzony efekt, uruchom pętlę w osobnym wątku.

0

Nieskończona pętla jest nie tak?

0

To znaczy w jaki sposób mam ja zapisać?

0

Zależy co chcesz osiągnąć.

To oczywiste, że nieskończona pętla zawiesza program.

0
 
if(checkbox...)
{
      Thread t = new Thread(JakasMetoda);
      t.Start();
}

void JakasMetoda()
{
    while(true){}
}

0

Jeżeli on chce modyfikować GUI w innym wątku niż wątek główny to program mu na to nie pozwoli i wywali wyjątek. W takim wypadku należy użyć dispatchera. Poza tym lepiej wykorzystać już utworzone przez system wątki z puli wątków niż tworzyć samemu nowe:

ThreadPool.QueueUserWorkItem(delegate {

	// Tutaj kod, który nie wymaga działań na GUI.

	App.Current.Dispatcher.BeginInvoke(new Action(() => { 

		// Tutaj kod, który robi różne operacje na GUI.

	}));
});

1 użytkowników online, w tym zalogowanych: 0, gości: 1