Рассмотрим код:Понимание темы/BeginInvoke? [Начинающий]
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);
}
}
Is (1) приемлемым способом легко начинают какую-то работу в отдельном потоке? Если бы не лучшая альтернатива была бы высоко оценена.
Есть (2) делать то же самое? Я предполагаю, что я спрашиваю, если запускается новый поток, или ..
Надеется, что вы можете помочь начинающий к лучшему пониманию :)
/Моберг
Существует большая статья здесь: http://ondotnet.com/pub/a/dotnet/2003 /02/24/asyncdelegates.html, который объясняет нюансы между потоками и асинхронными делегатами. –
Использование чего-то столь же дорогостоящего, как нить, а затем тратить его на Thread.Join * не * приемлемо. Существует много ресурсов, которые помогут вам выбрать между Thread и threadpool thread. –