2013-08-02 30 views
1

我已經在MSDN和網絡上做了一些閱讀,現在比以前更加困惑。MTAThread屬性和多線程的winform應用程序

我正在使用vb.net窗體窗體應用程序,並希望使用多個線程(但不是多個公寓)。

這是否意味着我需要在程序入口點設置MTAThread屬性?

有些消息來源似乎表明是的,有人說一個Windows窗體應用程序應該是STA,因爲COM對象,有人說MTA會在創建線程時自動設置,有些則不會......現在徹底混淆了。

如果我確實需要設置它,我可以這樣做,而不禁用應用程序框架並創建模塊來保存Public Sub Main()

+0

你能否解釋一下你試圖完成什麼?也許我們對你有一個差異化的方法。 – OneFineDay

+0

@DonA我的第一個線程應用程序,仍然不確定是否我甚至需要設置,應該或不應該設置何時不清楚源代碼。應用程序是單身公寓,多個簡單線程,Windows窗體應用程序。在默認的前臺線程上顯示UI,在各種後臺線程上顯示其他內容。一些BG線程需要互相交互和用戶界面。那足夠的信息了嗎? – Toby

+0

他們在做什麼樣的工作?他們應該如何相互溝通? – OneFineDay

回答

1

我會考慮在類對象中放置TCPListener,調用窗體可以訪問這些屬性,這個類可以有窗體可以偵聽的事件並將數據傳遞給UI - 可能需要delegates。任務也可以是類對象,並且可以有一個List(Of Task)因爲它們也是類對象,所以現在可以引發它的所有者正在監聽的事件。任何正在單獨線程上處理的任務都需要委託人提升事件。