Jos uvek nisam uspeo da postignem ono sto sam postavio kao krajnji cilj ali malim koracima priblizavamo se clju :).
Code:
public delegate void delSp();
private void button1_Click(object sender, RoutedEventArgs e)
{
Thread ss = new Thread(TrdRun);
ss.Start();
}
private void TrdRun()
{
if (this.conRichTextBox.Dispatcher.CheckAccess())
{
BackSp();
}
else
{
this.conRichTextBox.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new delSp(this.TrdRun));
}
}
private void BackSp()
{
do
{
sttSp.Start(); <-- Metoda Start iz moje klase. Ona formatira string koji je prethodnim akcijama napunjen CHAR podacima
dllFormat.ConverRtb(ref conRichTextBox, sttSp.ReturnList()); sttSp.ReturnList() --> Vraca string
}
while (sttSpe._bolReady == true);
}
opet ja sa istim problemom. Pogledao sam vase kodove ali nije mi uspelo. Gore navedeni kod radi dobro ali problem je u tome sto mi zamrzne ekran, zamrzne interfejs aplikacije zbog petlje do while (barem ja tako mislim).
Meni se cini kao da ne kreira novi tread.
Code:
do
{
sttSp.Start(); <-- Metoda Start iz moje klase. Ona formatira string koji je prethodnim akcijama napunjen CHAR podacima
dllFormat.ConverRtb(ref conRichTextBox, sttSp.ReturnList()); sttSp.ReturnList() --> Vraca string
}
while (sttSpe._bolReady == true);
Potrebno mi je da se u pozadini izvrsava ovaj kod sve vreme, dok se akcijom korisnika to ne prekine. Kada se otvori forma korisnik prvo klikne na jedan Button koji prikaze formu sa podesavanjima . Na formi sa podesavanjima nalazi se jedan CHECK Box. Klikom na button OK ove forme ako je oznacen CHECK BOX promenljiva (sttSpe._bolReady) == true postavlja se na TRUE i ova forma se zatvara.
Kada se forma zatvori, fokus dobija glavna forma sa koje smo i pokrenuli formu sa podesavanjima. Na ovoj formi nalazi se jos jedan Button na koji kada kliknemo treba da se izvrsava gornji kod sve dok korisnik ponovo ne klikne na Button koji otvara formu sa podesavanja i NE SKINE OZNAKU SA CHECK BOX-a i to potvrdi klikom na Button OK te forme.
Dakle problem je u tome sto se interfejs zamrzne i korisnik ne moze ponovo da klikne na dugme koje otvara formu sa podesavanjima i da tako sto SKINE OZNAKU iz CheckBox-a sto potvrdjuje klikom na Button OK te forme. Kada klikne na OK te forme, ako je uklonio oznaku sa checkbox Button-a promenljiva (sttSpe._bolReady == false) se postavlja na FALSE.
Ovu promenu registruje Do while petlja (u pozadini se izvrsava i stalno proverava promenljivu sttSpe._bolReady) i ako je sttSpe._bolReady == false treba da se zaustavi Thread.
Napomena: vise ne dobijam poruku (Exception iz VS - The calling thread cannot access this object because a diffrent thread owns it.) da je metoda pozvana iz drugog Thread-a. Sve dobro radi, osim sto mi se zamrzne interfejs aplikacije :(.