[英]How do I use WhenAny in VB.Net with multiple types?
我想将Task.WhenAny()
与具有不同返回类型但共有基本类型的任务列表一起使用。 我将使用Await
获得第一个就绪响应并将其从基本类型转换为所需的任何类型。 例如,一个可能是Task(of ClassDerived1)
和其他Task(of ClassDerived1)
但我会打电话给Task.WhenAny(的ClassBase)。
能做到吗 据我WhenAny
不支持协方差。
实际上,不支持方差的是Task<T>
类型(因为没有ITask<T>
类型)。 我遇到了同样的问题,这很烦人。
不幸的是,没有理想的解决方案。 我只是从WhenAny
获取简单的Task
,然后将as
-cast转换为适当的类型。
从svick的评论更新:如果您可以使每个输入任务成为Task<ClassBase>
,则可以从WaitAny
获取Task<ClassBase>
。
如果您想发疯,可以定义自己的(等待的) IMyTask<out T>
接口,将任务包装到其中,然后定义自己的WaitAny
。 或执行所有任务Task<dynamic>
。 我没有尝试过像这样的疯狂的东西。 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.