繁体   English   中英

如何在VB.Net中使用多种类型的WhenAny?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM