Generic awaitable-如何安排延续时间?

问题描述 投票:0回答:2

我手头有一个可能是TaskValueTaskValueTask<T>的对象(最好我可以支持任何类型的等待对象)。无论实际的类型如何,我都希望安排一个继续。最佳地,继续可以确定原始的等待项是否已成功完成,出现故障或已被取消。

该怎么做?

我的第一次尝试是:

var getAwaiterMethod = invocation.ReturnValue.GetType().GetMethod(nameof(Task.GetAwaiter));
var awaiter = (INotifyCompletion) getAwaiterMethod.Invoke(myAwaitableObject, new object[0]);
awaiter.OnCompleted(() => myContinuation);

但是,在这种情况下,继续无法判断等待对象是否已成功完成,出现故障或已被取消。

还有更好的方法吗?

c# async-await .net-standard-2.0 c#-8.0
2个回答
0
投票

您可以await dynamic类型:


-1
投票

[不确定this video是否能为您提供帮助,但这极大地促进了我对使用Task的理解。具体来说,他介绍了“任务继续选项”中的ContinueWith操作,它将为您提供所需的内容。从大约48:00开始,然后返回并根据需要重新启动。

© www.soinside.com 2019 - 2024. All rights reserved.