-1
상태 표시 줄을 만들고 싶습니다. 상태는 클래스 내부의 모든 메소드에서 설정해야합니다. 상태가 설정된 경우 5000ms가 표시되어야합니다. 5000ms 후 상태는 비어 있어야합니다. 때로는 이전 상태가 여전히 활성 상태 일 때 상태를 설정하려고 할 수도 있습니다. 이 경우 이전 상태를 덮어 쓰고 Task.Delay (5000)를 기다려야합니다. 다시 0으로비동기 작업 취소 및 다시 활성화
내 현재 코드에서 계산을 시작해야하는 것은 다음과 같습니다 : 나는 그것이 실행되기 전에 작업을 취소하기 때문 작동하지 않는
public CancellationTokenSource tokenSource { get; set; }
public CancellationToken token { get; set; }
public async Task SetStatusMessage(string pStatusMessage)
{
tokenSource.Cancel();
await Task.Run(async() =>
{
if (token.IsCancellationRequested)
{
token.ThrowIfCancellationRequested();
}
this.Dispatcher.Invoke(() =>
{
this.txtStatusMessage.Text = pStatusMessage;
});
await Task.Delay(5000, token);
this.Dispatcher.Invoke(() =>
{
this.txtStatusMessage.Text = "";
});
}, token);
public async void AnyMethod()
{
await this.SetStatusMessage("Hello World");
}
. 그것이 내가 OperationCanceledException
(?)을 얻는 이유입니다.
당신은'CancellationTokenSource'를 설정합니까? 취소 할 때마다이 값을 다시 설정해야합니다. 'CancellationTokenSource tokenSource = new CancellationTokenSource();'그리고 토큰을 작업 지연에 전달하십시오. ''기다려라 .Delay (5000, tokenSource.Token); ' –