我的代码更改导航栏项目的标题#变化形式的字符串。据我所知,UI不应该从另一个威胁中改变,那么它就成了,所以我想过使用BackgroundWorker。事实上,我不是在与线程一起工作,有人可以为我的任务提出最佳解决方案吗?C对另一个线程
Q
C对另一个线程
1
A
回答
2
have a look at the first answer in this thread. 它解释了如何使用BackgroundWorker。
但问题是,您的导航栏的项目是在UI线程(假设您正在使用WPF)创建的,而那些不能从另一个线程操纵。
为什么你必须在另一个线程中做到这一点?
5
您可以使用Invoke从另一个线程更新UI。
看看这篇文章:How to update the GUI from another thread in C#?
例如:
MethodInvoker NavBarItemInvoker = (delegate
{
OverviewOrgan_NavBarHelper cNavBarHelper = new OverviewOrgan_NavBarHelper(Organization);
foreach (NavBarItem item in GetNavigationBar.Items)
{
string cCaption = cNavBarHelper.UpdateNavBarItemCaption(item);
item.Caption = cCaption;
}
});
if (InvokeRequired)
{
Invoke(NavBarItemInvoker);
}
else
{
NavBarItemInvoker();
}
2
我认为你应该使用调度为
阅读更多关于它在这篇文章中: http://msdn.microsoft.com/en-us/magazine/cc163328.aspx
+0
I使用Windows窗体,而不是WPF – Edgar
相关问题
- 1. c#多线程,传递对象到另一个对象
- 2. 线程交互(从一个线程到另一个线程的数据)c#
- 3. 调用另一个类的线程(C#)
- 4. 分配对象到另一个线程
- 5. C#:在另一个线程的UI线程上显示对话框
- 6. 从C++中的另一个进程解锁一个线程
- 7. 停止线程从另一个线程c侦听TcpClient#
- 8. 从另一个线程终止C++中的线程
- 9. 如何从另一个线程监视C#线程
- 10. 从另一个线程操作线程
- 11. 从另一个线程运行线程
- 12. c#异常抛出一个线程被捕获在另一个线程
- 13. C++/Qt - 从一个线程到另一个线程插槽的信号
- 14. C++传递对象给一个线程
- 15. Android另一个线程
- 16. PlaySound在另一个线程
- 17. 处置另一个线程
- 18. 从另一个线程DoDragDrop()
- 19. 在另一个线程
- 20. HttpWebRequests从另一个线程
- 21. 从另一个线程
- 22. 从另一个线程
- 23. 使用另一个线程
- 24. 杀从另一个线程
- 25. 另一个线程WPF
- 26. 与另一个线程
- 27. 从另一个线程
- 28. 等待另一个线程
- 29. 被另一个线程
- 30. scrollToRowAtIndexPath从另一个线程
NavBarItem没有调用方法 – Edgar
您可以让其他线程在主线程上运行代码。看看他给你的链接。 – Laurence
NavBarItem没有Invoke,但NavBar本身 - 它是该项目的所有者。否则,您可以使用Application.OpenForms找到最顶层的表单,并在该表单上调用Invoke。请参阅[如何获取主窗体](http://stackoverflow.com/questions/1000847/how-to-get-the-handle-of-the-topmost-form-in-a-winform-app) – Matthias