Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 所有WinForms应用程序窗口是否共享同一线程?_C#_Winforms_Thread Safety_Ui Thread_Showdialog - Fatal编程技术网

C# 所有WinForms应用程序窗口是否共享同一线程?

C# 所有WinForms应用程序窗口是否共享同一线程?,c#,winforms,thread-safety,ui-thread,showdialog,C#,Winforms,Thread Safety,Ui Thread,Showdialog,我的WinForms应用程序不会执行应用程序。启动时立即运行(表单) 它首先初始化一些变量,访问命令行参数、应用程序配置API、其他外部内容,特别是使用使用实例化(并通过传递以前设置的一些值进行配置)并使用显示的表单(例如登录表单) 然后它执行Application.Run(Form)以显示主窗体,但主窗体也可以依次显示其他窗体(主要是使用ShowDialog)。所有表单都在单独的类库中定义。其中许多(windows)需要访问程序.Main(string[]args)中实例化的对象(是的,我已经

我的WinForms应用程序不会执行
应用程序。启动时立即运行(表单)

它首先初始化一些变量,访问命令行参数、应用程序配置API、其他外部内容,特别是使用
使用
实例化(并通过传递以前设置的一些值进行配置)并使用
显示的表单(例如登录表单)

然后它执行
Application.Run(Form)
以显示主窗体,但主窗体也可以依次显示其他窗体(主要是使用
ShowDialog
)。所有表单都在单独的类库中定义。其中许多(windows)需要访问
程序.Main(string[]args)
中实例化的对象(是的,我已经添加了
string[]args
部分,尽管默认情况下使用Visual Studio创建的WinForms应用程序没有该部分)并将对象相互传递

这让我担心线程安全,但我对“UI线程”概念的基本想法表明我的担心可能是错误的


那么,由同一WinForms应用程序进程实例化和显示的所有窗口(
Form
实例)是否共享同一UI线程(当然,除非我将实例化/显示它们的代码放在异步运行的
任务
或类似任务中)?或者我真的应该使用一些特殊的技术(特别建议)在它们之间安全地传递数据吗

回答你的问题有点困难,因为总有“但我在这里和那里创造一些线索…”潜伏着你没有告诉我们

然而,除非如此,否则是的。Winforms应用程序将使用1个线程作为其用户界面和所有周围代码

请注意,如果您开始胡闹以下内容:

  • 任务。运行
  • 螺纹类
  • 幕后工作者

然后我的答案就不见了。

回答你的问题有点困难,因为总有“…但我在这里和那里创建一些线程…”潜伏着你没有告诉我们

然而,除非如此,否则是的。Winforms应用程序将使用1个线程作为其用户界面和所有周围代码

请注意,如果您开始胡闹以下内容:

  • 任务。运行
  • 螺纹类
  • 幕后工作者
然后我的答案就消失了