开始选项卡用于新线程,关闭选项卡和结束线程
本文关键字:线程 选项 结束 用于 新线程 开始 | 更新日期: 2023-09-27 18:14:16
我按照http://www.dotnetspark.com/kb/1867-create-tab-control-wpf.aspx上的教程为WPF应用程序创建可关闭的选项卡。
我正在创建一个多线程应用程序,我将使用上面链接的可关闭选项卡。我希望每个线程都有自己的标签,并在运行时更新它。我应该在新线程中创建标签还是在主线程中创建标签并从新线程更新它?正确的做法是什么?
当标签关闭时,我如何使线程结束?
问候!
都不是。让主线程创建选项卡,在其他线程的指令下更新选项卡,并在选项卡关闭时命令线程终止。
学习如何使用分派器来协调线程。
如果一个线程做了一些按照程序逻辑在那个时候不应该做的工作,那么这个线程的代码就被破坏了。解决它。如果线程不应该在选项卡关闭时继续运行,则将其编码为在选项卡关闭时不继续运行。不要让线程被破坏,让它在程序逻辑不应该完成的情况下完成工作,然后试图在其他地方修复它。
这是一种反向思考线程的方式。线程只是工作的载体。你通过控制工作来控制他们。您编写线程执行的每一行代码。如果你不想让一个线程在条件Y下做X,那就写代码让它在条件Y下不做X。
总而言之,如果程序逻辑说,当选项卡Y关闭时不应该执行工作X,则执行以下操作:
1)在某处存储一个标志,指示工作X是否应该完成。
2)在工作X的代码中,选中此标志。如果设置为no,则不执行该工作。按照程序逻辑,这项工作不应该完成。
3)当选项卡关闭时,让UI线程设置停止做x工作的标志
制表符不应该对应线程。这不合逻辑。选项卡应该与选项卡中显示的内容相对应。(它们可能"碰巧"间接对应于线程,但这不是主要的。线程实际上对应于与选项卡相关的任何工作)
原则上,如果不同的线程接管了相同的工作,它不应该仍然在同一个选项卡中吗?或者相同的数据应该突然进入不同的选项卡,只是因为不同的线程正在生成它?您碰巧总是在同一线程中执行该选项卡中的工作,这是一个实现细节,应该而不是在体系结构中以这种方式反映出来。正如您所了解的,这只会产生愚蠢的情况,您必须找出哪个线程在做工作,而实际上您并不关心。
您必须使用UI线程来呈现/显示选项卡。请参阅此链接(存档)。正如标题所说的"用Dispatcher构建更响应的应用程序"