如何在MonoMac中进行后台处理

时间:2014-02-12 12:28:28

标签: c# mono monomac xamarin.mac

我刚开始使用MonoMac。我有一个带窗口的小窗口,其中包含一个按钮和一个标签,如果我点击按钮一个进程启动(执行循环)直到循环结束,UI被锁定,但我想更新标签(循环中每轮)(或未来的进度条)。我有什么办法让这种(异步)工作流程有效?

1 个答案:

答案 0 :(得分:2)

目前,您的代码将全部在UI线程上运行,因此您无法报告进度,因为线程正忙于处理您的循环。 MonoMac具有TPL支持,因此您应该能够利用它在后台运行代码

Task.Factory.StartNew(() => {
    for (...) 
    {
        ...
        // update UI
        uiControl.BeginInvoke(() => {
            uiControl.Text = "Updated from thread";
        });
    }
});