使用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?)但未完成我仍然错过了取消选项,但我找到了合适的解决方案。