选项卡我也跟着上http://www.dotnetspark.com/kb/1867-create-tab-control-wpf.aspx本教程为WPF应用程序创建关闭的选项卡。开始新的线程,关闭标签和结束线程
我创建多线程应用程序,我将使用可关闭的选项卡从上面的链接。我希望每个线程都有自己的选项卡并在运行时对其进行更新。我应该在新线程中创建选项卡还是在主线程中创建选项卡并从新线程更新它?这样做的正确方法是什么?
当标签关闭时,如何使线程结束?
问候!
选项卡我也跟着上http://www.dotnetspark.com/kb/1867-create-tab-control-wpf.aspx本教程为WPF应用程序创建关闭的选项卡。开始新的线程,关闭标签和结束线程
我创建多线程应用程序,我将使用可关闭的选项卡从上面的链接。我希望每个线程都有自己的选项卡并在运行时对其进行更新。我应该在新线程中创建选项卡还是在主线程中创建选项卡并从新线程更新它?这样做的正确方法是什么?
当标签关闭时,如何使线程结束?
问候!
都没有。让主线程创建选项卡,在各个其他线程指示的时候更新选项卡,并在关闭选项卡时命令线程终止。
了解如何use the dispatcher协调线程。
如果一个线程执行,通过程序逻辑,不应该在那个时候做了一些工作,该线程的代码被打破。修理它。如果该选项卡关闭时线程不应该继续运行,请将其编码为在关闭选项卡时不继续运行。不要让程序逻辑破坏线程,编写代码来完成工作,然后尝试将其修复到别的地方。
这是思考线程的倒退方式。线程只是工作的车辆。你通过控制工作来控制它们。你编写线程执行的每一行代码。如果你不希望在条件Y一个线程X,代码就不要做X病情Y.
总之,如果程序逻辑说,当标签Y被关闭工作X不应该做的,这样做:
1)某处,存储标志,指示工作X是否应该做或没有。
2)在工作X的代码中,选中此标志。如果它设置为否,请不要做这项工作。通过程序逻辑,工作不应该完成。这样做是损坏。
3)当关闭标签,具有UI线程设置标记,以停止做工作十
标签不应该对应于线程。这不合逻辑。标签应该对应于标签中显示的内容。 (它们可能'碰巧'是间接对应于线程,但这不是主要的,线程真的对应于与该选项卡相关的任何工作。)
原则上,如果不同的线程接管了相同的工作,它仍然在同一个标签中?或者应该只是因为不同的线程正在生成相同的数据而突然进入不同的选项卡?你碰巧总是在同一个线程中执行该选项卡中的工作,这是一个实现细节,应该在体系结构中反映这种方式而不是。正如你所知道的那样,当你真正不在乎的时候,你必须弄清楚哪个线程正在进行工作,这只会造成愚蠢。
这里是我被困在:可以说,我创造7个一线这将打开7个标签,当我关闭选项卡之一,它必须知道哪个线程属于该选项卡,所以我可以放弃它。什么是最好的方式来做到这一点? – Arya
@Ayra你不想创建线程每一个选项卡,因为WPF不允许线程改变在其他线程创建的对象。相反,您希望在某个长时间运行的过程中创建一个线程,该过程在过程完成时自动结束。您还可以创建一个继承自“TabItem”的控件,该控件将在构造函数中启动一个线程,并在处理TabItem时结束该线程。我不会推荐这条路线。 – Rachel
@Arya:它不必知道哪个线程属于该选项卡,因为它不关心哪个线程被停止。当它正在完成的工作完成时,终止线程的工作。 UI线程应该简单地指出与该选项卡关联的作业已完成,并且该选项卡线程在作业完成后不应继续运行。 (你正在编写任何代码,因此使其协同工作。) –