1
我刚开始使用MonoMac。我有一个窗口,其中包含一个按钮和一个标签,如果我点击按钮一个进程开始(执行一个循环),直到循环完成,UI被锁定,但我想更新标签(或未来的进度条)。我有什么要做,这样(异步)的工作流程工作?如何在MonoMac中做后台处理
我刚开始使用MonoMac。我有一个窗口,其中包含一个按钮和一个标签,如果我点击按钮一个进程开始(执行一个循环),直到循环完成,UI被锁定,但我想更新标签(或未来的进度条)。我有什么要做,这样(异步)的工作流程工作?如何在MonoMac中做后台处理
目前您的代码将全部在UI线程上运行,因此您无法报告进度,因为线程正在处理您的循环。 MonoMac有TPL支持,所以你应该可以利用它来在后台运行你的代码
Task.Factory.StartNew(() => {
for (...)
{
...
// update UI
uiControl.BeginInvoke(() => {
uiControl.Text = "Updated from thread";
});
}
});
非常好,谢谢。但我注意到,在这个过程中,我的应用程序提高了95%的CPU使用率。 – john84
@ john84你可能做了太多的UI更新? – James
对,我知道了,我的通知在错误的位置。再次感谢你, – john84