我刚开始使用MonoMac。我有一个带窗口的小窗口,其中包含一个按钮和一个标签,如果我点击按钮一个进程启动(执行循环)直到循环结束,UI被锁定,但我想更新标签(循环中每轮)(或未来的进度条)。我有什么办法让这种(异步)工作流程有效?
答案 0 :(得分:2)
目前,您的代码将全部在UI线程上运行,因此您无法报告进度,因为线程正忙于处理您的循环。 MonoMac具有TPL支持,因此您应该能够利用它在后台运行代码
Task.Factory.StartNew(() => {
for (...)
{
...
// update UI
uiControl.BeginInvoke(() => {
uiControl.Text = "Updated from thread";
});
}
});