Window
은 표시된 후 5 초 후에 자동으로 숨 깁니다 (ShowWindow
방법). 또한 수동으로 숨길 수도 있습니다 (HideWindow
메소드). 다음은 현재 구현 된 내용입니다.CancellationTokenSource가 새 것으로 바뀌십시오
문제 : 수동으로 열어 본 다음 몇 번 수동으로 창을 닫으면 열 때 1 초 후 즉시 숨 깁니다. 의도적으로해서는 안됩니다. 그 이유는 CTS를 새로운 것으로 바꾸고 취소를 요청하지 않기 때문입니다. 나는 CTS와의 기술이 좋지 않아 이것을 올바르게 구현하는 방법을 염두에 두지 않는다. ShowWindow
가 HideErrorWindowCTS
에서 보이는 때문에
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'] (https://msdn.microsoft.com/en-us/library/system.threading)을 사용할 수 있습니다. cancelationtoken.none (v = vs.110) .aspx)을 클릭하십시오. – stuartd