Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C# tredovi i konzolna aplikacija

[es] :: .NET :: .NET Desktop razvoj :: C# tredovi i konzolna aplikacija

[ Pregleda: 2851 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Aleksandrov

Član broj: 47782
Poruke: 161
*.adsl.eunet.rs.



Profil

icon C# tredovi i konzolna aplikacija12.12.2010. u 17:23 - pre 162 meseci
Pozdrav,

Napravio sam program u kojem imam nekoliko tredova.

U jednom tredu imam
Code:
 
...
               Console.SetCursorPosition(0, 7);
                Console.Write("Uspostavljena je konekcija sa: " + IPADDR);
...


u drugom tredu imam
Code:

...
                Console.SetCursorPosition(3, 12);
                Console.Write("Uspesno ocitavanje preko wirelessa");
...


u trecem tredu imam
Code:

...
                Console.SetCursorPosition(0, 11);
                Console.Write("Trenutno vreme je: " + DateTime.Now.ToString());
...


Desava se da se u toku izvrsavanja programa javi greska da se na mestu predvidjenom za ispis jednog stringa ispise drugi string. NPR. da se na Poziciji konzole (3,12) ispise trenutno vreme.
Pitanje je:
kako da podesavanje pozicije na konzoli povezem sa ispisom na konzoli tj. da se nakon postvaljanja kursora na odredjenu poziciju obavezno izvrsi ispis namenjen toj poziciji.

Hvala

---------------------
****
< 9 9 > My name
..( o ).. is
. . -- . .MX86251 ?
 
Odgovor na temu

Dusan Kondic
Programer
ZR "Parametar" Ljubovija
Ljubovija

Član broj: 49961
Poruke: 225
*.dynamic.isp.telekom.rs.

Sajt: www.drinacoding.com


+14 Profil

icon Re: C# tredovi i konzolna aplikacija13.12.2010. u 06:45 - pre 162 meseci
Verovatno ti se thread-ovi preklapaju. Prvo ti se izvrši prva komanda prvog thread-a,
zatim prva komanda drugog threada, druga komanda prvog thread-a ...
Upotrebi callback ili postavi flag-ove tako da naredni thread mora da sačeka završetak
izvršavanja prethodnog.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: C# tredovi i konzolna aplikacija13.12.2010. u 07:40 - pre 162 meseci
flagovi?

Nista nece spreciti threead overrun ako ne koristis sistemske synch objekte (zbog sistemskog spinlocka). dakle lock(zajednickainstanca) u svim blokovima koji rade sa konzolom.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Dusan Kondic
Programer
ZR "Parametar" Ljubovija
Ljubovija

Član broj: 49961
Poruke: 225
*.dynamic.isp.telekom.rs.

Sajt: www.drinacoding.com


+14 Profil

icon Re: C# tredovi i konzolna aplikacija13.12.2010. u 08:58 - pre 162 meseci
Ja lično koristim callback-ove radi pravilne sinhronizacije, ali zar ne mogu
flagovi da se iskoriste na sledeći način?
Code:

                    for (int i = 0; i < 1000; i++)
                    {
                        if (FlgUTokuMojThread1 == false && FlgUTokuMojThread2 == false)
                        {
                            StartovanMojThread3 = true;
                            MojThread3.Start();
                        }
                        else
                        {
                            System.Threading.Thread.Sleep(20);
                        }
                    }
                    if (StartovanMojThread3 == false)
                    {
                        MessageBox.Show("Došlo je do greške prilikom izvršavanja posla MojThread3.");
                    }

Molio bih za objašnjenje mmix jer dosta koristim thread-ove kada komuniciram sa uređajima pa me sve zanima.
Hvala.
 
Odgovor na temu

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
*.evj-kabel.net.



+14 Profil

icon Re: C# tredovi i konzolna aplikacija14.12.2010. u 18:43 - pre 162 meseci
"Goli" flegovi se ne koriste (bar ne u tom tvom obliku) zato što ti niko ne garantuje da se neće desiti thread-switch između pisanja/čitanja flega i sledeće linije koda. Na primer:
Code (csharp):

if (FlgUTokuMojThread1 == false && FlgUTokuMojThread2 == false)
{
  //ovde moze biti FlgUTokuMojThread1 ili 2 == true, ako Thread1 ili 2 nisu "fire-once" !
  StartovanMojThread3 = true;
  MojThread3.Start();
}
 


Cak stavise, JIT kompajler moze da optimizuje takve petlje (ako se fleg ne menja u threadu tokom izvršavanja petlje), tako da nikada ni ne proverava fleg, što se delimično otklanja keywordom volatile, mada i dalje ostaje problem sledeće linije koda.

if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: C# tredovi i konzolna aplikacija

[ Pregleda: 2851 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.