我刚开始使用 MonoMac。我有一个小窗口,其中包含一个按钮和一个标签,如果我单击该按钮,则会启动一个进程(执行循环)直到循环完成,UI 被锁定,但我想更新标签(或将来的进度条)循环中的每一轮。我该怎么做才能使这样的(异步)工作流程起作用?
问问题
301 次
1 回答
2
目前,您的代码都将在 UI 线程上运行,因此您无法报告进度,因为线程正忙于处理您的循环。MonoMac 具有TPL支持,因此您应该能够利用它在后台运行您的代码
Task.Factory.StartNew(() => {
for (...)
{
...
// update UI
uiControl.BeginInvoke(() => {
uiControl.Text = "Updated from thread";
});
}
});
于 2014-02-12T12:35:02.060 回答