我的WinForms应用程序在启动时不会立即执行Application.Run(Form)
。
首先初始化一些变量,访问命令行参数,应用程序配置API,其他外部资源,特别是实例化的表单(例如登录表单)(并通过传递先前设置的某些值进行配置)使用using
并显示ShowDialog
。
然后它执行Application.Run(Form)
以显示主窗体,但主窗体也可以显示其他窗体(主要是ShowDialog
)。所有表单都在单独的类库中定义。他们中的许多人(窗口)需要访问Program.Main(string[] args)
中实例化的对象(是的,我已经添加了string[] args
部分,尽管默认情况下使用Visual Studio创建的WinForms应用程序没有它)将对象传递给彼此;
这让我担心线程安全,但我对" UI线程"的基本想法。概念表明我的担忧可能是错误的。
因此,实例化并由同一个WinForms应用程序进程显示的所有窗口(Form
实例)共享相同的UI线程(除非我将代码实例化/显示在异步运行Task
中当然还有类似的东西)?或者我应该使用一些特殊技术(特别建议表示赞赏)安全地在它们之间传递数据?
答案 0 :(得分:3)
有点难以回答你的问题,因为总会有" ...但我会在这里和那里创建一些线程......"潜伏着你并没有告诉我们。
然而,除此之外,是的。 Winforms应用程序将使用1个线程作为其用户界面和所有周围代码。
请注意,如果您开始使用以下内容: