我想答案是否定的。我在 stackoverflow 上检查了类似的问题,但它们似乎根据特定解决方案的需要走了不同的方向(但可能错过了一些东西)。
WinForms 应用程序中是否可以有多个 UI 线程?我正在重构并想知道是否应该使用 ConcurrentDictionary 或 Dictionary 来从那些访问表单的线程进行访问。这是针对具有多个开发人员/设计的更大代码体,我希望做出尽可能可靠的选择(但不要过度设计)。由于我正在寻找一般性答案,因此这个问题中没有具体细节,尽管通常都有。感谢您的查看和任何帮助 - 非常感谢。
是的,可以这样做,但这样做通常是错误的。多 UI 线程 - Winforms https://stackoverflow.com/questions/7568376/multiple-ui-threads-winforms
我遇到过的每一个合理的 GUI 设计总是使用单个 UI 线程,即使框架允许更多线程。我看到的唯一例外是独立窗口位于自己的线程中,并从位于不同线程中的模型访问共享数据,但这种设计的好处是有限的。 (编辑:在某些情况下,使用多个 UI 线程的更好替代方法是对不同的窗口使用不同的进程(例如浏览器中的选项卡),因为这允许主应用程序恢复,例如,如果窗口损坏了堆。)
然而,对于任何相当高级的应用程序,都会有多个非 UI 后台线程。
因为您是在线程安全的背景下询问,所以我建议您牢记 MVVM 和 MVP 模式。如果您的结构位于 View、Presenter 或 ViewModel 中,则它不需要线程安全。模型经常生活在不同的线程中,或者与不同的线程交谈——例如如果它是数据库或数据库的包装器。所以线程安全通常是Model设计的一部分,或者是Model与ViewModel/Presenter通信的一部分。
See MVVM:从头到尾的教程? https://stackoverflow.com/questions/1405739/mvvm-tutorial-from-start-to-finish,
MVP 和 MVC 是什么以及有什么区别? https://stackoverflow.com/questions/2056/what-are-mvp-and-mvc-and-what-is-the-difference/101561#101561
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)