Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 4 odgovora
  • 3.829 pregleda

Najnovija ↓

Thread.Abort i Regioni 31.07.2008. u 21:02 · pre 222 meseca #1
Ovo je kod niti
Code:

Thread.BeginCriticalRegion();
                Console.WriteLine("Pocetak!");
                Console.ReadLine();
                Console.WriteLine("Zavrsetak regiona!");
                Thread.EndCriticalRegion();
                Console.WriteLine("Kraj!!"); // ne bi trebalo da se vidi zbog Abort()


U glavnoj metodi sam kreirao i pokrenuo thread

Code:

// kreiramo thread
            ThreadStart ts = new ThreadStart(zaNit);
            Thread tr = new Thread(ts);

            // startujemo
            tr.Start();

            // gasimo i ovde cemo uhvatiti exception
            tr.Abort();


Problem je u tome što ne izvršava liniju Console.WriteLine("Zavrsetak regiona!");, a ona je u okviru kritičnog regiona, već samo ispiše početak i izbaci readline.
Re: Thread.Abort i Regioni 03.08.2008. u 21:53 · pre 222 meseca #2
Mislim da si pogresno protumacio sta je critical region. To nije parce koda koje se ne moze prekinuti, to je samo deo koda koji ima poseban "tretman" ukoliko exception "iscuri" iz njega. Ako se to desi host koji je podigao .net kod biva obavesten o tome i moze da preduzme odgovarajucu akciju; trenutno tu funkcionalnost koristi samo SQL 2005 kao host korisnickog koda da zastiti lockove na SQL objekte (da ne bi tvoj kod ubio sam SQL 2005 ubacujuci ga u deadlock), za klasicne desktop i asp.net aplikacije nema efekta.
Dakle critical region ne sprecava Abort da ubije thread, a posto tvoj kod ne radi unutar SQL2005 ubijanje thread-a unutar critical region-a nije proizvelo nikakve negativne posledice. Ako hoces da se osiguras da thread zavrsi neku akciju pre nego se zavrsi, nemoj koristiti Abort() da ga gasis, upotrebi neku inter-thread signalizaciju da obavestis thread da se sam ugasi kad zavrsi task koji je zapoceo.
Potpis
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ć
Re: Thread.Abort i Regioni 07.08.2008. u 00:18 · pre 222 meseca #5
Kako koji problem, nema pravila. Generalno kad resavam problem oslanjam se na sledecu listu po prioritetu:
licno znanje
tehnicka dokumentacija (uglavnom msdn library)
licni kontakti preko MSN-a
blogova ako bas ne resim na prva tri
[ES]/MSDN forumi, mada mi iskreno [ES] nije pomagao, a MSDN forum je bio parcijalno uspesan.

Ovaj problem podpada pod prvu kategoriju jer sam svojevremeno pokusao da uradim isto sto i mare :) GUI je lansirao thread koji je ciklicno obavljao pozadinske multistep transakcije i nije smeo da bude prekinut usred iste; posto resenje nije upalilo MSDN je otkrio zasto, pa se to "zalepilo" u mozak kao i resenje bazirano na thread signalizaciji. Sad da si me pitao kako napraviti host koji dize CLR i biva obavesten o prekidu u critical regionu, to ne bih znao da ti kazem iz glave i morao bih da krenem redom listom :).
Potpis
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ć
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme