回答
1)在自己的線程中運行外部類的實例最簡單的方法是什麼?
類的實例不「運行」。方法呢。
因此,您可能需要查看APM pattern和BackgroundWorker類。
2)當窗體關閉時,實例的線程是否自動終止?
這取決於線程是如何啓動的。線程可以是background thread或前臺線程 - 後者可以阻止應用程序終止。
我正在檢查基於事件的異步模式和BackgroundWorker類。 – OIO 2010-08-30 00:06:20
如果只是想要異步調用的幾行代碼,最好的方法可能是ThreadPool.QueueUserWorkItem。請參閱:What's the difference between QueueUserWorkItem() and BeginInvoke(), for performing an asynchronous activity with no return types needed
我不認爲這就是我想要的,並且類可以像他們需要的那樣大。我正在尋找一種簡單的方法來從父窗體啓動異步實例,並在窗體關閉時終止它們。 – OIO 2010-08-29 23:35:33
查看您是否正在使用託管環境,當對象被實例化時,如果超出範圍,它將自動處置。處置實際上由垃圾收集處理。
如果您使用的是UnManaged對象,那麼您有責任在使對象超出範圍之前關閉資源。
垃圾收集定期打開並開始收集超出範圍的所有對象。如果您需要處理大型對象,則可以嘗試使用WeakReference類,該類將保存該對象,並將其暴露給垃圾收集。
閱讀有關的WeakReference和垃圾收集在這裏: http://www.abhisheksur.com/2010/07/garbage-collection-algorithm-with-use.html
我希望這會幫助你。
- 1. 工作線程表示線程類的一個實例
- 2. std ::類實例的線程
- 3. c類的新實例#
- 4. 實例化創建線程的類的多個實例...?
- 5. 線程類實例創建一個線程函數
- 6. 只有一個線程的實例
- 7. C++共享互斥量和類實例的11個線程
- 8. 使用線程同時創建一個類的十個實例
- 9. 創建一個新的類實例
- 10. 實例化一個沒有「新」的類
- 11. C#做另一個類的實例
- 12. C#一個類的無限實例
- 13. 重新實例化線程
- 14. 線程實例新老java
- 15. 的Java:線程安全類的實例
- 16. 在不同線程中使用一個類的實例
- 17. 使用不同線程更改一個類的所有實例
- 18. 創造一個遞歸類實例的新對象與多線程
- 19. 如何在C#中實例化一個屬性的新實例
- 20. 我應該創建一個新的線程作爲擴展線程的類還是隻做一個新的線程對象實例?
- 21. 實例另一個類實例的參數中的一類
- 22. 線程安全:類的實例
- 23. 從一個實例到另一個實例的線
- 24. PowerMocking一個新的實例
- 25. 睡覺一個新的線程c#
- 26. 如何將新的FirefoxDriver實例傳遞給每個新線程?
- 27. C++類的實例
- 28. 多線程使用一個RInside實例
- 29. 調用另一個類的線程(C#)
- 30. Smalltalk Pharo - 無法更新線程中的類實例變量
類實例(對象)不在線程上運行。他們的方法可以,而且可以在多個線程上(一次)。 – 2010-08-29 23:27:02
這是否會自動發生,還是必須將方法設置爲在多個線程上運行?形式Main()具有STAThread方法屬性,可以在單個線程中執行表單中的所有方法嗎?因爲在窗體中使用Thread.Sleep會凍結它。 – OIO 2010-08-29 23:51:31
關於STAThread:「COM線程模型只適用於使用COM互操作的應用程序,在不使用COM互操作的應用程序中使用此屬性不起作用。」 http://msdn.microsoft.com/en-us/library/system.stathreadattribute.aspx – 2010-08-30 00:14:30