【发布时间】:2011-12-29 07:37:47
【问题描述】:
我对 WPF 非常陌生。我在互联网上查找了几个关于线程的示例和教程。他们有自己的描述方式。但是对于像我这样的幼稚,我想用自己的风格去理解。
我可以使用数据库更新功能开始我的第一个线程。
这是场景:
我有大量数据要插入数据库。现在让我们假设以下代码(只要我点击“继续”按钮,这个过程就会启动:
int initial = 0;
int maxData = 10
while (initial<maxData) {
//Database query here
}
以上进程会在不同的线程中运行。
接下来,我的主窗口中有一个“标签”。对于每个数据库查询,我想在标签中显示一些消息。
例如,
// this will happen in default UI thread.
label.Content = "Updating"; // Specifically for @TomTom ;)
编辑: 我做了以下事情:
var task = new Task(() =>
{
for (int i=0; i<10; i++) {
//Create new Grid HERE
// Add Table with some dynamic data here..
// print the above Grid here.
}
});
task.ContinueWith((previousTask) =>
{
label.Content = printerStatus(); // will return "Out of Paper", "printing", "Paper jam", etc.
},
TaskScheduler.FromCurrentSynchronizationContext());
label.Content = "Sending to printer";
程序会返回错误提示“调用线程必须是 STA,因为很多 UI 组件都需要这个。”
我不知道下一步该做什么。请帮忙!
【问题讨论】:
-
@TomTom:你在编程上想的太多了。总结是,我想在后台做一些繁重的任务,并在主窗口中显示它的进度。无论如何,谢谢你的建议。我实际上不想显示查询更新消息,即使是单个查询。
-
Google 并了解:System.Threading.SynchronizationContext.Current。
标签: c# .net wpf multithreading