如何运行可取消的任务来更新UI组件

时间:2018-03-16 13:04:29

标签: c# winforms task

使用c#.NET,我尝试更新表单中的标签并在几秒钟后将其重置为空,如果没有进行其他更新(在这种情况下,必须取消重置并再次延迟) )。

我找到了具有可取消任务的不同解决方案,并在延迟后更新了用户界面,但未两者合并。

这是一次尝试,在从UI线程更新属性时失败:

    private CancellationTokenSource TokenClearUIMessage;

    private void SetUIMessage(string Message, string Detail, Color Color)
    {
        if (TokenClearUIMessage != null) TokenClearUIMessage.Cancel();

        TokenClearUIMessage = new CancellationTokenSource();
        Task.Delay(1000).ContinueWith(t => {
            LblMessage.Text = "-"; // <= THROWS EXCEPTION
            LblMessage.BackColor = Color.White;
        }, TokenClearUIMessage.Token);

        LblMessage.Text = Message;
        LblMessage.BackColor = Color;
        LblDetails.Text = Detail;
    }

我该怎么办? 谢谢。

编辑:推荐的解决方案非常有用(How do I update the GUI from another thread?)但未完成我仍然错过了取消选项,但我找到了合适的解决方案。

0 个答案:

没有答案