延迟任务

编程入门 行业动态 更新时间:2024-10-23 14:29:14
本文介绍了延迟任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

无法获得任务延迟. 同步完全不会延迟. 异步停止在await Task.Delay(delay);.

Cannot get a Delay in a task. The Sync does not delay at all. The Async stops at await Task.Delay(delay);.

我尝试过:

Task wait4me = Task.Delay(1000); await wait4me;

并且不起作用-停在await wait4me;.

Task<int> TaskOfTResult_MethodSync(int delay) { Debug.WriteLine($"TaskOfTResult_MethodSync delay = {delay} {DateTime.Now}"); int hours = 10; Task.Delay(delay); Debug.WriteLine($"TaskOfTResult_MethodSync after delay {DateTime.Now}"); return Task.FromResult(hours); } async Task<int> TaskOfTResult_MethodAsync(int delay) { Debug.WriteLine($"TaskOfTResult_MethodAsync delay = {delay} {DateTime.Now}"); await Task.Delay(delay); Debug.WriteLine($"After await Task.Delay({delay}) {DateTime.Now}"); int hours = 11; return hours; }

测试

Task<int> task = TaskOfTResult_MethodSync(1000); Debug.WriteLine("before task.Wait"); task.Wait(); Debug.WriteLine("after task.Wait"); int i = task.Result; Debug.WriteLine($"i = {i}"); Debug.WriteLine($""); Task<int> taskA = TaskOfTResult_MethodAsync(1000); Debug.WriteLine("before taskA.Wait"); taskA.Wait(); Debug.WriteLine("after taskA.Wait"); i = taskA.Result; Debug.WriteLine($"i = {i}"); Debug.WriteLine($"");

推荐答案

您可以简单地通过

Task.Delay(delay).Wait()

更多推荐

延迟任务

本文发布于:2023-11-10 09:39:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1575026.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!