[ toxi_programer @ 15.05.2007. 21:49 ] @
Napisao sam par kraćih tutoriala koji objašnjavaju evente i delegate, multithreading i korišćenje GDI+a u GUI programiranju. Ako nađete neku grešku ili imate neki komentar napišite ga ovde. Da nebih kopirao ceo tekst( smara me da ga formatiram) daću manji citat i link ka celom tekstu. Tutorial o Multithreading-u: Citat: Razumevanje pojma procesa i niti( thread-a) Vindovs je jedan od operativnih sistema na kojima je moguće izvršavanje više procesa "istovremeno". Naime, svaka aplikacija/servis se tretira kao proces, a na vaše računaru je uvek pokrenuto više od jednog procesa. Na primer možete pokrenuti web browser i notepad i pomislićete da ta dva procesa rade istovremeno, ali ne rade istovremeno! Procesor računara može da izvršava kod samo jednog programa u jednom trenutku, ali ima sposobnost( koristeći sofisticirane algoritme) da veoma brzo prelazi sa izvršavanja koda jednog programa na izvršavanje koda drugog programa. Na ovaj način računar stvar iluziju da svi procesi rade istovremeno, iako se to ustvari nedogađa. Naravno, jedan računar može imati više od jednog procesa ali to nemenja način na koji se izvršavaju procesi, s'tim poboljšanjem što će svaki od procesora biti zadužen za manji broj procesa i samim tim ceo sistem će raditi brže. Nit( thread) je "osnovna jedinica građe" procesa jer svaki proces mora imati najmanje jednu nit. Ali, po potrebi, program( iliti proces) može imati više od jedne niti. Ono što je bitno uočiti jeste da procesor računara na potpuno isti način tretira i procese i niti- on će "malo izvršavati jedan proces( ili nit) pa malo drugi pa treći" i tako u krug. Kada će procesor preći sa izvršavanja jedne niti( ili procesa) na drugu mi nikako nemožemo znati, mada ipak možemo delimično uticati na vreme ovog prelaženja( objašnjenje sledi kasnije). Takođe treba znati da svaka od niti procesa može zauzeti sve sistemske resurse( npr. memoriju) koji su rezervisani za taj proces. Ostaje pitanje zašto bi se koristilo više niti u jednom procesu. Korišćenje višenitnosti ( multithreading) nemože stvarno ubrzati rad programa ali može stvoriti iluziju da program radi brže, ali i mnogo više od toga! Razmotrimo primer štampanja teksta. Napisali ste neki tekst u notepad-u i želite da ga ištampate. Izabraćete opciju "Print" i štampanje će početi ali primetićete da vi i dalje( dok traje štampanje) možete menjati sadržaj teksta. Ovo je moguće zato što je notepad pokrenuo štampanje u drugoj niti programa a prva nit( koja obrađuje unos teksta i ostale stvari) je nastavila svoje izvršavanje, dakle obe niti se izvršavaju istovremeno. Da nije urađeno na ovaj način( koristeći dodatnu nit) vi nebiste bili u mogućnosti da menjate sadržaj teksta sve dok štampanje ne bude završeno. Postoji mnogo primera, ovo je samo jedan od njih. CEO TEKST: <mod: link uklonjen> Tutorial o Eventima i Delegatima Citat: Eventi i delegati su međusobno u vezi, jer za pravljenje eventa je potreban neki delegat. Ako ste programirali bilo šta na jeziku C ili C++ onda vam je jasno šta je to pokazivač na funkciju. Na .NET platformi nepostoji( ni u jednom jeziku) takav pokazivač a zamena za njega je delegat. Pa čemu u stvari služi delegat? Pomoću delegata možete, posredno, pozvati jednu ili više funkcija. Možda ovo deluje kao bespotrebna stvar ali uopšte nije tako. Jednostavan primer je funkcija za na primer sortiranje nekog niza. Obično takve funkcije zahtevaju dva argumenta- prvi je niz koji treba da se sortira a drugi argument bi bila funkcija koja će određivati da li je jedan element niza veći od drugog( videćete primer za ovo kasnije). Da bi ste predali funkciju koja će vršiti poređenje morate koristiti delegate( pošto je nemoguće koristiti pokazivače na funkciju). Ako vam ipak nije jasno šta su to delegati, shvatićete u sledećem odeljku. CEO TEKST: <mod: link uklonjen> Tutorial o korišćenju GDI+a u GUI programiranju Citat: Skoro svaka knjiga u sebi sadrži jedno ili par poglavnja koja opisuju GDI+ i stoga ću samo u najkraćim crtama da objasnim njega a u nastavku teksta će biti reči o primeni GDI+a za pravljenje GUI interfejsa( iznenadićete se kakve sve mogućnosti postoje!), odnosno pretstaviću najbolji( bar koliko je meni poznato, a poznato mi je) metod za modeliranje izgleda button-a, formi i drugih GUI komponenti. CEO TEKST: <mod: link uklonjen> Nadam se da će nekom koristiti. E da, svi primeri koda su dati u C# jeziku. [Ovu poruku je menjao mmix dana 16.05.2007. u 20:41 GMT+1] |