这是一个非常肤浅的问题,因为我不知道如何解决这个问题。我搜索了很多,但没有找到任何东西,因为我不知道我可以搜索的关键字。
首先,请看这个图像:
我想创建一个statusbar
。在这个例子中,我想设置状态" Hello World"。为此我创建了一个新任务并显示字符串" Hello World"。 5秒后,应清除状态。这是我的代码:
//command to set a new status
//this will be executet from another method
await this.SetStatusMessage("Hello World");
public async Task SetStatusMessage(string pStatusMessage)
{
await Task.Run(async () =>
{
this.Dispatcher.Invoke(() =>
{
this.txtStatusMessage.Text = pStatusMessage;
});
await Task.Delay(5000);
this.Dispatcher.Invoke(() =>
{
this.txtStatusMessage.Text = "";
});
});
}

现在我的问题是,有时我想在旧状态仍处于活动状态时设置新状态。对于这种情况,应该覆盖旧状态,并且应该重置await Task.Delay(5000);
并从0开始计数。在此任务内没有任何输入的5000ms之后,应该清除输出。
如果有人能给我一些想法或关键字来搜索,那就太好了。感谢。
答案 0 :(得分:0)
有多种方法可以做到这一点。使用CancellationTokenSource
只是一种方法。
您可以将CancellationTokenSource
传递给外部任务,以实现此目的。 Here就是一个例子。您可以通过再次调用SetStatusMessage
取消当前任务并创建新任务。在重置Text
之前,检查任务是否未被取消。