【发布时间】:2009-10-15 15:39:13
【问题描述】:
我无法理解如何使用线程。在根据需要调用以允许用户从项目集合中进行选择的委托中,由于数据检索,第一次实例化成本很高。方法如下:
private void _doStandAloneProjectPickSession(ProjectDataMode dataMode) {
var picker = new ProjectPicker();
var svc = _getFilterService(dataMode); ===> this is time consuming**
_vm = new ProjectSelectionViewModel(picker, svc);
_vm.RequestClose += _onClosing;
_window = picker;
_window.ShowDialog();
}
在它自己的线程中启动长时间运行的进程的基本想法是(即 new Thread(doSomething).Start 然后使用 Dispatcher(在 wpf 应用程序中)在进程发生时切入?我想做类似于下面的伪代码,但我无法让它工作。
private void _doStandAloneProjectPickSession(ProjectDataMode dataMode) {
...
// let user know the system is fetching data
// _getDispatcher.BeginInvoke(DispatcherPriority.Background, ()=>SetStaus("Fetching data...");
IProjectFilterService svc = null;
// fetch the data
// new Thread(_getFilterService(dataMode)).Start();
_vm = new ProjectSelectionViewModel(picker, svc);
_vm.RequestClose += _onClosing;
...
}
谁能告诉我工作代码可能是什么样子?
干杯,
浆果
【问题讨论】:
-
你能把这个重新写得更清楚一点吗?我不太确定您要做什么,使用 wpf 调度程序很容易,并且给定委托和有效负载的任务线程很容易,将它们放在一起也应该很容易,但我仍然不清楚你在做什么。
标签: c# wpf multithreading