是使用全局變量作爲params的唯一方式,還是有更時尚的方式來做到這一點?C#線程,如何使一個線程運行帶參數的方法?
回答
您可以使用ParameterizedThreadStart啓動一個帶參數的線程。
實施例:
Thread newThread = new Thread(myObj.DoMethod);
newThread.Start(parameter);
雖然,我通常最終使用的lambda
Thread newThread = new Thread(() => myObj.DoMethod(param1, param2, param3));
newThread.Start();
這可以更方便,因爲ParameterizedThreadStart採用單個object
作爲參數。這很少是我想要的。
()=>那是什麼宏? (不知道來自java) –
'=>'符號是一個[lambda表達式](http://msdn.microsoft.com/en-us/library/bb397687.aspx)這是編寫匿名函數的簡短方法。 –
你可以使用一個簡單的Action<T>
那然後調用的參數的方法,只是用一種封閉:
var thread = new Thread(() =>
{
CallSomeMethod(someParam);
});
由於root46已經回答了,如果直接使用線程然後使用ParameterizedThreadStart。如果您使用的是.NET 4或更高版本,還可以看看Task和Task Parallel Library。
這樣做的更多的語言無關的方式是,當該方法只能採取一個參數,你有一個以上的數據塊,創建具有屬性的新類爲每個你想,然後就參數傳遞該類的一個實例。 (這是你看到的與事件處理相關的對象EventArgs
完成的事情。)
話雖如此,使用lambdas的閉包,正如別人所說的那樣,是一種相當流暢和簡單的做事方式,在實踐中方便。
- 1. 另一類中帶參數的單獨線程運行方法
- 2. 在c中使用線程中的參數運行方法#
- 3. 如何啓動方法帶參數的使用線程
- 4. 如何使用ruby線程在類中運行一個方法?
- 5. 如何從另一個線程使用線程的方法?
- 6. 如何在子線程結束後在主線程中運行一個方法?
- 7. 從另一個線程運行線程
- 8. 線程方法未運行?
- 9. 如何從一個帶參數的線程返回一個值?
- 10. 使用線程並行運行方法
- 11. 如何在Android的另一個線程中運行方法?
- 12. 的Windows線程(C運行時,並行線程,的std ::線程)
- 13. 運行兩個線程[c]
- 14. 運行C++線程()
- 15. 兩個參數一個C#線程
- 16. 帶線程的程序/方法流程
- 17. C線程參數
- 18. 運行在一個線程
- 19. C#線程方法
- 20. VB9帶多個參數的新線程
- 21. 運行線程的run()方法的線程已經完成
- 22. 在主線程/程序終止時運行一個方法?
- 23. C#線程方法返回一個值?
- 24. 如何使用線程運行一個簡單的函數
- 25. 如何將參數傳遞給c多線程中的線程
- 26. 運行的線程在C#
- 27. 如何運行一個線程在python外線程中調用的函數
- 28. C#線程 - 一個線程數組,其中每個線程包含一個帶有圖像的表單
- 29. C#方法中帶參數的線程使用相同的變量
- 30. 在C#中運行兩個帶有兩個線程名的Url
使用全局變量作爲線程的參數可能是最簡單的方法。 – millimoose