【发布时间】:2016-11-23 18:48:45
【问题描述】:
Window 在出现 5 秒后自动隐藏(ShowWindow 方法)。也可以手动隐藏(HideWindow 方法)。这是我目前的实现。
问题:当我连续几次手动打开然后关闭窗口时,它会在打开后立即隐藏到 1 秒。它不应该是设计使然。原因是我用新的 CTS 替换了 CTS,并且从不要求取消。我对 CTS 的技能很差,不知道如何正确实施。
public class Window
{
public bool Visible { get; set; }
public CancellationTokenSource HideErrorWindowCTS { get; set; }
public async void ShowWindow()
{
Visible = true;
await Task.Delay(TimeSpan.FromSeconds(5));
if (!HideErrorWindowCTS.IsCancellationRequested)
{
Visible = false;
}
}
public void HideWindow()
{
HideErrorWindowCTS.Cancel();
HideErrorWindowCTS = new CancellationTokenSource();
Visible = false;
}
}
【问题讨论】:
-
也许您应该将 token 传递给方法而不是令牌源 - 然后您可以在不希望取消时使用
CancellationToken.None。
标签: c# task token cancellation cancellationtokensource