Diskuze: Vlákna s parametry

C# .NET .NET (C# a Visual Basic) Vlákna s parametry American English version English version

Avatar
Jan
Člen
Avatar
Jan:

Ahoj, potřeboval bych poradit s jedním problémem týkající se vytváření nových vláken s parametry na který jsem narazil. Potřebuji vytvořit nové vlákno, které spustí metodu a jako jeden s parametrů jí předá referenci na proměnou, ale když se o to pokusím pomoci ThreadStar tak mi Visual Studio zahlásí chybu Cannot use ref or out parameter inside an anonymous method, lambda expression, or query expression. Proto bych se chtěl zeptat jestli je vůbec možné vytvořit vlákno s odkazem na proměnou a pokud ano tak jak.

ThreadStart starter = delegate { Strela(ref letadloPozice); };
Thread strela = new Thread(starter);
strela.Start();

private void Strela(ref int letadloPozice)
{
//Kód
}

Předem děkuji za radu :)

Odpovědět 23.2.2013 13:38
Cogito ergo sum
Avatar
matesax
Redaktor
Avatar
Odpovídá na Jan
matesax:

Zaprvé musíš delegátovi dát:

delegate(int letadloPozice)

Za druhé - proč tam cpeš ref? (Nevím - asi to nepůjde.)

 
Nahoru Odpovědět 23.2.2013 13:49
Avatar
David Dostal
Redaktor
Avatar
David Dostal:

Já bych to řešil takto:

Thread t = new Thread(() => {Tady bude to, co má vlákno dělat});
t.Start();

Osobně ref vůbec nepoužívám, ale snad by to mělo jít :)

Editováno 23.2.2013 15:05
 
Nahoru Odpovědět  +2 23.2.2013 15:04
Avatar
bassclide
Člen
Avatar
bassclide:

Na tento způsob bych to řešil já

Thread t = new Thread(delegate () { strela(int i);});
Nahoru Odpovědět 23.2.2013 15:32
Carpe diem Baby !
Avatar
David Dostal
Redaktor
Avatar
David Dostal:

Taky možnost.

 
Nahoru Odpovědět 23.2.2013 15:40
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Dostal
matesax:

Což jsem psal - nač ref...

 
Nahoru Odpovědět 23.2.2013 15:41
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.