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

Thread.Abort i Regioni

[es] :: .NET :: Thread.Abort i Regioni

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

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Marko Medojević
Team leader
Digital ST
Beograd

Član broj: 93659
Poruke: 776
*.adsl-3.sezampro.yu.

Sajt: www.digitalst.rs


+99 Profil

icon Thread.Abort i Regioni31.07.2008. u 20:02 - pre 191 meseci
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.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Thread.Abort i Regioni03.08.2008. u 20:53 - pre 191 meseci
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.
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

Marko Medojević
Team leader
Digital ST
Beograd

Član broj: 93659
Poruke: 776
*.adsl-3.sezampro.yu.

Sajt: www.digitalst.rs


+99 Profil

icon Re: Thread.Abort i Regioni05.08.2008. u 21:25 - pre 191 meseci
Hvala!
 
Odgovor na temu

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 464
*.adsl-1.sezampro.yu.

Sajt: www.articles411.com


+8 Profil

icon Re: Thread.Abort i Regioni06.08.2008. u 22:44 - pre 191 meseci
Ja se izvinjavam za ovaj offtopic, ali moram da pitam.

@mmix, jel ti ovo čitaš od nekle? Zar stvarno sve ovo znaš onako "iz glave"?
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Thread.Abort i Regioni06.08.2008. u 23:18 - pre 191 meseci
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 .
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

[es] :: .NET :: Thread.Abort i Regioni

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

Postavi temu Odgovori

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