我的WinForms應用程序在啓動時不會立即執行Application.Run(Form)
。是否所有的WinForms應用程序窗口都共享同一個線程?
它首先初始化一些變量,訪問命令行參數,應用程序配置API,其他外部的東西,特別是實例化的形式(例如登錄形式)(並通過傳遞一些先前設置的值)與using
並顯示ShowDialog
。
然後執行Application.Run(Form)
顯示主窗體,但主窗體也可以顯示其他窗體(主要是ShowDialog
)。所有表單都在單獨的類庫中定義。他們中的很多人(窗口)需要訪問在Program.Main(string[] args)
中實例化的對象(是的,我已經添加了string[] args
部分,儘管使用Visual Studio創建的WinForms應用程序缺省沒有它)並將對象傳遞給對方;
這讓我擔心線程安全,但是我對「UI線程」概念的基本概念暗示了我的擔心可能是錯誤的。
那麼,所有的實例化和相同的WinForms應用程序共享顯示相同的UI線程(除非我把代碼實例/顯示在他們的窗戶(Form
實例)異步運行Task
或類似的東西明確課程)?或者我應該實際使用一些特殊的技術(具體的建議值得讚賞)在它們之間安全地傳遞數據?