【发布时间】:2013-09-03 21:12:18
【问题描述】:
我希望执行此操作:
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
... // do some UI specific stuff
});
但我不想将 lambda 表达式发送到 UI 线程,而是想将其发送到后台工作人员。
情况就是这样,我有一个消息框,我需要知道它的响应是否需要做一些额外的处理(在这种情况下是复制一个文件)。
如何做到这一点?我愿意接受不包括 lambda 表达式调度的各种重构解决方案。
感谢阅读
【问题讨论】:
-
所以你的意思是你需要在后台线程中调用一些东西?还是我错过了什么?
-
不。没有意义。 MessageBox 在 UI 线程上运行,因此当它从其模式显示返回时,您就在 UI 线程上。您将在后台线程(例如 ThreadPool.QueueUserWorkItem)上运行 lambda,然后在完成后使用调度程序返回 UI 线程。但是您需要来自 UI 线程的调度程序;不确定它是否与您在代码中提到的不同。
-
@Will 是的,所以我会研究一下 ThreadPool.QueueUserWorkItem。谢谢
-
@Will QueueUserWorkItem 绝对有效。如果您想回答这个问题,我会将其标记为正确的。再次感谢
-
您的评论说“UI 特定的东西”。如果它是 UI 的东西,它需要在 UI 线程中。如果它 不是 UI 的东西,那么它可以在非 UI 线程中。
标签: c# .net multithreading windows-phone-8 windows-phone