c# – 只是停止异步方法
发布时间:2020-12-15 06:36:50 所属栏目:百科 来源:网络整理
导读:我有这种播放声音的方法,当用户点击屏幕时,当用户再次点击屏幕时,我希望它停止播放.但问题是“DoSomething()”方法不会停止,它会一直持续到完成. bool keepdoing = true;private async void ScreenTap(object sender,System.Windows.Input.GestureEventArgs
我有这种播放声音的方法,当用户点击屏幕时,&当用户再次点击屏幕时,我希望它停止播放.但问题是“DoSomething()”方法不会停止,它会一直持续到完成.
bool keepdoing = true; private async void ScreenTap(object sender,System.Windows.Input.GestureEventArgs e) { keepdoing = !keepdoing; if (!playing) { DoSomething(); } } private async void DoSomething() { playing = true; for (int i = 0; keepdoing ; count++) { await doingsomething(text); } playing = false; } 任何帮助将不胜感激. 解决方法
这是一个CancellationToken是什么.
CancellationTokenSource cts; private async void ScreenTap(object sender,System.Windows.Input.GestureEventArgs e) { if (cts == null) { cts = new CancellationTokenSource(); try { await DoSomethingAsync(cts.Token); } catch (OperationCanceledException) { } finally { cts = null; } } else { cts.Cancel(); cts = null; } } private async Task DoSomethingAsync(CancellationToken token) { playing = true; for (int i = 0; ; count++) { token.ThrowIfCancellationRequested(); await doingsomethingAsync(text,token); } playing = false; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容