2013-08-02 31 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)因为它们也是类对象,所以现在可以引发它的所有者正在监听的事件。任何正在单独线程上处理的任务都需要委托人提升事件。