如何创建带有返回值的延迟任务?
如何创建带有返回值的延迟任务?
嘿,这个问题其实挺容易解决的,我给你两种实用的写法,你可以选顺手的来用:
方法一:用async/await(最推荐,代码清晰易读)
直接把方法标记为async,先等待延迟完成,然后返回true就行——编译器会自动帮你把返回值包装成Task<bool>,完全适配新的抽象类要求,而且还能正确响应传入的取消令牌:
public override async Task<bool> Start(CancellationToken cancellationToken) { await Task.Delay(1000, cancellationToken); return true; }
这种写法就像写同步代码一样,逻辑一目了然,后续如果要加其他逻辑也特别好改。
方法二:用ContinueWith链式调用
要是你不想用async语法,也可以用ContinueWith在延迟任务完成后返回指定值,不过可读性会稍差一点:
public override Task<bool> Start(CancellationToken cancellationToken) { return Task.Delay(1000, cancellationToken) .ContinueWith(_ => true, cancellationToken); }
记得把取消令牌也传给ContinueWith,这样如果延迟过程中令牌触发取消,整个任务也能正确响应。
备注:内容来源于stack exchange,提问作者Mr. Boy
相关产品推荐
相关产品推荐

