0

我刚开始使用 MonoMac。我有一个小窗口,其中包含一个按钮和一个标签,如果我单击该按钮,则会启动一个进程(执行循环)直到循环完成,UI 被锁定,但我想更新标签(或将来的进度条)循环中的每一轮。我该怎么做才能使这样的(异步)工作流程起作用?

4

1 回答 1

2

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

Task.Factory.StartNew(() => {
    for (...) 
    {
        ...
        // update UI
        uiControl.BeginInvoke(() => {
            uiControl.Text = "Updated from thread";
        });
    }
});
于 2014-02-12T12:35:02.060 回答