Názory ke článku Vlákna v C# - 1. díl – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Názory ke článku Vlákna v C# - 1. díl – Programujte.comNázory ke článku Vlákna v C# - 1. díl – Programujte.com

 

Názory ke článku Vlákna v C# - 1. díl

mnn   NOVÝ
1. 7. 2008

fajn clanok, pre zaciatocnikov ok (ja uz som u vlakien celkom doma) uz iba ta synchronizacia, niekedy je ako nocna mora :-)

jakubk, autor článku   NOVÝ
2. 7. 2008

Reagoval na komentář od uživatele mnn : Synchronizace je peklo, to máš pravdu:-) Teorii v dalším díle mám už napsanou, snad to bude dost pochopitelné... tak zase za týden:-)

durmitor   NOVÝ
6. 7. 2008

Zdravím, díky za seriál, je fakt bombově napsanej. Zrovna se mi to hodí do jedný aplikace, ale narazil jsem na jeden problém:


private void button1_Click(object sender, EventArgs e)
{
Thread nove_vlakno = new Thread(test);
nove_vlakno.IsBackground = true;
nove_vlakno.Start();
}




private void test()
{
timer1.Enabled = true;
}


Bohužel timmer se mi zřejmě nikdy nespustí. Funkce test byla trošku naditější, měla toho dělat víc, ale protože nedělala, redukoval jsem její obsah až na tohle a zde je chyba. Prosím nevíte někdo, co s tím? Díky Ondra

jakubk, autor článku   NOVÝ
6. 7. 2008

Reagoval na komentář od uživatele Ondřej Karas : C# má tři Timery - jeden z namespace System.Windows.Forms, druhý ze System.Threading a třetí ze System.Timers.Timer. Pokud jsi Timer přetahoval do aplikace z Toolboxu, použil se ten z Windows.Forms namespace, ale pro práci s vlákny potřebuješ ten ze System.Threading (nebo i ten z System.Timers to zvládne). Víc informací najdeš na googlu, základní porovnání co dovedou tady http://mark.michaelis.net/Blog/SystemWindowsFormsTimerVsSystemThreadingTimerVsSystemTimersTimer.aspx. Vidíš to, tohle vůbec není špatný námět na článek:-) Doufám, že ten tvůj problém je způsobený tímhle, ale řekl bych, že jo.

durmitor   NOVÝ
6. 7. 2008

Reagoval na komentář od uživatele Jakub Kottnauer :

Díky na porovnání se podívám a zkusím to. Jde o to, že aplikace kterou dělám by měla odeslat po sériový lince zprávu a pak čekat dokud nepříjde odpověd, zkontrolovat ji a pak se dál zařídit. V případě že nepříjde potom se podle toho zařídit. Vzhledem k tomu, že to nějakej čas dá, nechci tím zatěžovat další vlákno. Myslím že zvláštní vlákno by to řešilo... nebo by mohl být nějaký další problém?

jakubk, autor článku   NOVÝ
6. 7. 2008

Reagoval na komentář od uživatele Ondřej Karas : Přesně na tohle jsou vlákna jako dělaná, řešil bych to taky tak.

durmitor   NOVÝ
6. 7. 2008

Našel jsem si příklad a ten jsem použil, je tam vytvořena třída:



class TimerExampleState
{
public int counter = 0;
public System.Threading.Timer tmr;
}


Já jsem si vytvořil funkci:



static void Spust100msTimmer()
{
TimerExampleState s = new TimerExampleState();
TimerCallback timerDelegate = new TimerCallback(CheckStatus);
System.Threading.Timer timer = new System.Threading.Timer(timerDelegate, s, 100, 0);
s.tmr = timer;
}


a tady je obsluha:



static void CheckStatus(Object state)
{
TimerExampleState s = (TimerExampleState)state;
s.counter++;
s.tmr.Dispose();
s.tmr = null;
}


Vše funguje krásně (k mému překvapení :) ) ale mám problém, že když chci v tý obsluze nastavovat globální bool proměnnou tak mi to hlásí:



Error 2 An object reference is required for the non-static field, method, or property 'Nabijec.Form1.vyprseni_limitu' D:\PROJEKTY\PC programy\NABIJEC\NABIJEC_011\Nabijec\Form1.cs 600 13 Nabijec

durmitor   NOVÝ
6. 7. 2008

Tak si odpovím naštěstí sám, stačí proměnnou nastavit jako static :) Ale díky za tip s tím timerem :) A určitě o tom něco napiš.

supec   NOVÝ
15. 7. 2008

super článek, jediný co jsem nenašel v článkách, jako je tenhle, a co bych velmi uvítal, je ovládání FORMů a komponent na nich (např. labelů nebo vykreslování grafu na pozadí aplikace) z jiného než hlavního Threadu. Tušim, že se to dělá nějak přes Invoke či co, ale nikdy se mi nepodařilo to pořádně pochopit...
Díky za případné tipy jednoduchý na pochopení...

jakubk, autor článku   NOVÝ
15. 7. 2008

Reagoval na komentář od uživatele supec : Neboj, i na to jednou dojde:-) Ještě budou dva, tři díly o něčem jiném ohledně vláken a pak bude Invoke

supec   NOVÝ
15. 7. 2008

Reagoval na komentář od uživatele Jakub Kottnauer :
tak to už se těšim, dík...

jakubk, autor článku   NOVÝ
1. 8. 2008

Reagoval na komentář od uživatele supec : Trochu to upřesním, teď už přesně vím, kdy o Invoke budu psát - bude to v 7. díle (tam to spíš jen naťuknu, než o tom budu nějak sáhodlouze mluvit) a pak až v 10. díle, který bude o asynchronních delegátech. Nebudu o tom psát zvlášť, protože to zase tak velká kapitola není a v obou těch dílech bude souviset s jinou problematikou, takže kvůli tomu to bude takhle rozdělené. Momentálně píšu 6. díl, takže tohle je 100% jistá informace. Počkáte si trochu déle, ale dočkáte se:)

Mám už i hrubou představu, kolik dílů bude seriál mít - 14 až 16:-)

Pavel Novotný   NOVÝ
11. 10. 2008

Chytat všechny výjimky je nesmysl, minimálně by tam měl být zvlášť catch pro ThreadAbortException, protože pokud ten thread vytuhne a potřebuješ ho ukončit, zavoláš threadInstance.Abort(), ale v tvém případě to chytne catch třeba někde uvnitř a k ukončení nemusí dojít=to je jeden z důvodů, proč se nadává na chytání obecných výjímek Exception... a to nemusí být samozřejmě jen v hlavní funkci threadu.

Přidej svůj názor

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo e-mailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Reaguješ na příspěvek:
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové názory e-mailem (pouze pro přihlášené)
Sleduj názory ke článku a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.



Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý