Poznáváme C# a Microsoft.NET – 50. díl – použití vláken II.

Diskuze čtenářů k článku

avatar
24. 11. 2007 13:45

Programovou oflline verzi seriálu naleznete ke stažení na http://poznavame-c-msnet.wz.cz/

Souhlasím  |  Nesouhlasím  |  Odpovědět
johnyx  |  07. 12. 2005 12:38

Dobty den,
neviete ci po skonceni serialu sa bude dat stiahnut komplet cely....popiade ci vyjde ako nejaky celok v pdf/chm...pod
Za odpoved dakujem

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
24. 11. 2007 13:45

Programovou oflline verzi seriálu naleznete ke stažení na http://poznavame-c-msnet.wz.cz/

Souhlasím  |  Nesouhlasím  |  Odpovědět
Alda  |  29. 11. 2005 16:58

Dík za vysvětlení.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Alda  |  27. 11. 2005 14:41

Mě jenom zajímalo, jestli je mě k něčemu učit se C#, když chci vytvářet jednoduché programy typu poznámkový blok apod. Na co to tedy je když si program nebude moct spustit někdo jiný, kdo nemá na počítači framework apod? 

Souhlasím  |  Nesouhlasím  |  Odpovědět
cowgaR  |  27. 11. 2005 18:59

nuz to je skor filozoficka debata.V buducnosti si to spusti URCITE kazdy(win user), dnes je to sirene (zatial) samostantne, kym sa to nestane castou novej winFX kniznice u Visty...

ak dnes kodujes pod windows, dajme tomu v MFC(eh), tak sa zamysli nad tym, kolko kniznic musi mat v systeme 'nainstalovanych' uzivatel(a niekedy mu napr. spravna MFC chyba!) a ze vlastne win32 api je tiez uz v systeme (predsa ten 1GB adresar netvoria len drivery)...a ked chces aplikaciu hodit multiplatformne, tak to vyzaduje omnoho viac usilia ako u .NET, ktore zatial multiplaformne nieje, ale to len teoreticky

Ak by MS chcel, mal by napr. OSX verziu hotovu do pol roka, teraz ked je MAC na inteloch. Je ale logicke, ze to MS nechce, .NET je enterprise riesenie, a dobre predava ako MS servery tak i MS databazy. U tucnych uz funguje sice MONO, i ked viac nefunguje ako funguje, ale to sa zlepsi

ber to ako Microsoftov pokus o novy start, o plne objektovo orientovanu library, kde doterajsi koding postaveny na kniznici napisanej v C proceduralne s milionom wrapperov pripominal utrpenie...vdaka tomu VCL od Borlandu slavilo pod windows take uspechy.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Alda  |  26. 11. 2005 13:52

Proč program vytvořený v C# nejede na počítači kde není nainstalován net framework? Jak udělat aby jel? Děkuji za odpověď.

Souhlasím  |  Nesouhlasím  |  Odpovědět
cowgaR  |  26. 11. 2005 21:46

C# je takzvany 'manazovany' jazyk, to znamena, ze zdroje, ktore pouziva(zvacsa pamatove), su managovane middle-ware beziacom nad OS, v tomto pripade .NET runtime-om a jeho Garbage Collectorom. Je to este trosku zlozitejsie, C# kompilator ti vyprodukuje len takzvany managed *.exe ci *.dll balicek, ktory v sebe obsahuje MSIL instrukcie, pochopitelne len danym .NET runtimom. Takze ho musis mat nainstalovany, aby on potom mohol ten IL jazyk zkompilovat do nativneho kodu(strojovy jazyk, nieco ako assembler). Cize u 'C#' sa to deje na 2x, narozdiel od zkompilovaneho nativneho .exe povedzme v jazyku C, kde uz nativny kod obsahuje samotny 'nemanazovany' subor *.exe.

Takze tvoja jedina moznost je nainstalovat .NETruntime, nalepsie sucasnu verziu 2.0, ak vsak mas programy vyzadujuce nutne verziu 1.x, tak nainstaluj aj tu, mozu bezat vedla seba. 2.0 nepotrebuje vobec 1.0 a vacsina programov facha O.K., niektore vsak nie(Paint.NET).

Nemusis sa nicoho bat, instalovanim .NET runtimu nijako system nespomalis, a pokial nepouzivas .NET tak ti vobec v systeme nebezi, ako by tam ani nebol. Jedine co sa trochu 'zasvini' je registracka, ale to prezijes.

Souhlasím  |  Nesouhlasím  |  Odpovědět
neznalec  |  27. 11. 2005 18:34

co je potom oproti c++ vyhodou v c# kdyz musim mit jeste runtime prostredi?

Souhlasím  |  Nesouhlasím  |  Odpovědět
cowgaR  |  27. 11. 2005 19:11

to je na dlho...povedalo by som vsetko, zaporom C# je vsak o dost vyssia pamatova narocnost a nevhodnost na 'real-time' aplikacie.

inak ma vyvoj v hociakom CLS jazyku pod .NET same vyhody, prvu, ktoru si vsimnes, je ze neuvolnujes pamat po objektoch. Vec, ktora je v C++ niekedy enormne zlozita, a niekedy dokonca nemozna...ak si niekedy videl pocetne memmory-leak buggy, tak v C# ich mozes dostat len velmi zriedkavo (ak drzis wrapper na nemanaged objekt, povedzme nejaky GDI pen), alebo vobec. Dalsi klad je API, jazyk bez API je N I C. A API .NET je z vacsej casti Brilliant.

Tiez ma C# plno novych 'features', co ho posuva medzi velmi moderne jazyky, narozdiel od konkurencie. Ma uz genericke typy, ma partial classes, ma properties, ma kompilatorom riesene annonymous methods, je PLNE objektovy i s pracou s primitivnymi typmi, ma perfektnu pracu s collections, a je to jazyk buducnosti na nove api(avalon/indigo) atd atd

zvladnut spravne C++ je vseobecne povazovane za kumst, kedze ti okrem features ponuka aspon 2 brokovnice a 3 kravaty, na ktore sa mozes obesit. C# dost obmedzil pisanie nebezpecneho kodu, vo verzii 2 je o krok dalej ako Java a k tomu na ovela lepsej ceste -> C# 3.0 a Linq.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Alda  |  26. 11. 2005 13:50

Při programování v C# jsem narazil na jeden problém. Když vytvořím nějáký program pomocí C# ve visual studiu, na svém počítači si můžu program spustit a odzkoušet. Problém je v tom, že když chci zkusit spustit program na počítači na kterém není nainstalován net framework tak program nejede. Dá se to nějak obejít aby si mohl kdokoliv spustit můj program a nepotřeboval k tomu Net framework apod. Děkuji za odpověď

Souhlasím  |  Nesouhlasím  |  Odpovědět
frog  |  25. 11. 2005 13:14

Celkom zaujímavy serial, bolo by ešte zaujímavejšie, keby vychádzal aj ako CHM súbor vrátane pripájaných zdrojových kodov. Určitee by to uvítalo mnoho ľudí.

Souhlasím  |  Nesouhlasím  |  Odpovědět
azazel@email.cz  |  25. 11. 2005 08:33

lock(this) je konstrukce kterou se příliš nedoporučuje používat
this je instance aktuální třídy, kterou má určitě k dispozici i někdo jiný - mimo třídu, proto je nebezpečí, že i on může stejný objekt zamknout
správným řešením je vytvořit si privátní objekt:
object thisLock = new object(); // případně static, pokud chceme aby byl zámek společný pro všechny instance
a ten pak zamykat:
lock(thisLock) {
}
PS: ještě taková perlička, která by se však rozhodně používat neměla ;) lock dokáže zamknout i hodnotové typy - v takovém případě je zámek vytvořen nad hodnotou
lock(10) {
lock("string") {
důvod proč to nepoužívat je že hodnota je věcí globální (číslo deset je pořád číslem deset ať už jsme kdekoliv  v programu), takže by vám ten zámek mohl zamknout někdo i v úplně jiné části nad kterou nemáte kontrolu...
 

Souhlasím  |  Nesouhlasím  |  Odpovědět
Zasílat názory e-mailem: Zasílat názory Můj názor