執行的方法與參數我有一個方法,我實例如下:幫助與線程
new DatabaseHarness.MemoryStressTest().ExecuteTest("Thread 1",1,1,1)
什麼是通過一個線程調用此請求,傳遞參數如上圖所示的標準方式,使用.NET 4的線程功能?
非常感謝
執行的方法與參數我有一個方法,我實例如下:幫助與線程
new DatabaseHarness.MemoryStressTest().ExecuteTest("Thread 1",1,1,1)
什麼是通過一個線程調用此請求,傳遞參數如上圖所示的標準方式,使用.NET 4的線程功能?
非常感謝
.NET 4.0的做法是使用Task
。
var task = Task.Factory.StartNew(
() =>
{
new DatabaseHarness.MemoryStressTest().ExecuteTest("Thread 1", 1, 1, 1);
},
TaskCreationOptions.LongRunning
);
如何:
Thread thread = new Thread(() => {
new DatabaseHarness.MemoryStressTest().ExecuteTest("Thread 1",1,1,1);
});
thread.Start();
這樣做有它的至少兩種方式。點擊此鏈接瞭解更多信息:http://www.dotnetspider.com/resources/4698-Making-Parameterized-reads-C.aspx。
第一個選項涉及到創建ParameterizedThreadStart委託,第二個選項是創建包裝您的參數的匿名方法調用(使用第二種方法可能會導致不需要的關閉)。
由於該使用拉姆達爲的ThreadStart,如果你是從硬編碼參數值改變(「線程1」,1等)變量(threadName,輸入processid等等),這將複雜的事情,對嗎?所以你會想要在lambda範圍內創建局部變量作爲參數傳入? – 2011-05-09 18:47:09
@Joel - 當然,但在*問題中沒有變量*在回答中很難顯示正確的參數化,尤其是在討論捕獲的變量時***。 – 2011-05-09 19:12:55