這是建立在C#中的線程剛剛啓動線程匿名的方式(),因爲你正在使用開始(;) 以下2種辦法是等價的。如果你需要Thread變量來做某事(例如通過調用thread0.join()來阻塞調用線程),那麼你使用第二個。
new Thread(() =>
{
Console.WriteLine("Anonymous Thread job goes here...");
}).Start();
var thread0= new Thread(() =>
{
Console.WriteLine("Named Thread job goes here...");
});
thread0.Start();
現在是Thread方法的一部分。如果你看到線程聲明,我們有以下(我省略了另外3個)。
public Thread(ThreadStart start);
線程將委託作爲參數。委託是參考一種方法。所以Thread需要一個參數,它是一個委託。 ThreadStart是這樣聲明的。
public delegate void ThreadStart();
這意味着你可以將任何方法傳遞給Thread,它返回void並且不接受任何參數。所以下面的例子是等價的。
ThreadStart del = new ThreadStart(ThreadMethod);
var thread3 = new Thread(del);
thread3.Start();
ThreadStart del2 = ThreadMethod;
var thread4 = new Thread(del2);
thread4.Start();
var thread5 = new Thread(ThreadMethod);
thread5.Start();
//This must be separate method
public static void ThreadMethod()
{
Console.WriteLine("ThreadMethod doing important job...");
}
現在我們認爲ThreadMethod方法做的工作量很小,我們可以把它做到本地和匿名。所以我們根本不需要ThreadMethod方法。
new Thread(delegate()
{
Console.WriteLine("Anonymous method Thread job goes here...");
}).Start();
您在委託給最後一個花括號後看到的等價於我們的ThreadMethod()。您可以通過引入Lambda語句進一步縮短以前的代碼(請參閱MSDN)。這只是你正在使用,看看它是如何結束如下。
new Thread(() =>
{
Console.WriteLine("Lambda statements for thread goes here...");
}).Start();
它創建一個新的線程對象傳入一個匿名方法(委託),並啓動它。就這樣。創建匿名方法本質上是一種將代碼塊作爲委託參數傳遞的方法 –