Rozważmy kod:Zrozumienie wątku/BeginInvoke? [Początkujący]
class Work
{
public void DoStuff(string s)
{
Console.WriteLine(s);
// .. whatever
}
}
class Master
{
private readonly Work work = new Work();
public void Execute()
{
string hello = "hello";
// (1) is this an ugly hack ?
var thread1 = new Thread(new ParameterizedThreadStart(o => this.work.DoStuff((string)o)));
thread1.Start(hello);
thread1.Join();
// (2) is this similar to the one above?
new Action<string>(s => this.work.DoStuff(s)).BeginInvoke(hello, null, null);
}
}
Czy (1) dopuszczalny sposób łatwy zaczynając jakąś pracę w osobnym wątku? Gdyby nie lepsza alternatywa byłaby doceniona.
Czy (2) robi to samo? Chyba co pytam jest, jeśli nowy wątek jest uruchomiony, lub ..
Spodziewać się można pomóc początkującym do lepszego zrozumienia :)
/Moberg
Istnieje wielka artykuł tutaj: http://ondotnet.com/pub/a/dotnet/2003 /02/24/asyncdelegates.html, który wyjaśnia niuanse między wątkami i asynchronicznymi delegatami. –
Używanie czegoś tak drogiego jak wątek, a następnie marnowanie go za pomocą Thread.Join jest * nie * do zaakceptowania. Istnieje wiele zasobów, które pomogą Ci wybrać wątek i wątek wątku. –