Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 使用Microsoft.Bcl.Async在Net 4.0中等待观察_Vb.net_Async Await_System.reactive_Visual Studio 2015 - Fatal编程技术网

Vb.net 使用Microsoft.Bcl.Async在Net 4.0中等待观察

Vb.net 使用Microsoft.Bcl.Async在Net 4.0中等待观察,vb.net,async-await,system.reactive,visual-studio-2015,Vb.net,Async Await,System.reactive,Visual Studio 2015,我正在使用Microsoft Visual Studio Comunity 2015,目标是Net 4.0。我已经通过Nuget安装了以下内容:Rx Main 2.2.5、Microsoft.Bcl.Async 1.0.168。我需要等待一个可观察的,但当我写 等待观察。返回(42) 我得到一个编译器错误: “BC36930‘Await’要求类型‘IObservable(of Integer)’具有合适的GetAwaiter方法。” 请注意,我可以等待任务,如等待TaskEx.FromResul

我正在使用Microsoft Visual Studio Comunity 2015,目标是Net 4.0。我已经通过Nuget安装了以下内容:Rx Main 2.2.5、Microsoft.Bcl.Async 1.0.168。我需要等待一个可观察的,但当我写

等待观察。返回(42)

我得到一个编译器错误:

“BC36930‘Await’要求类型‘IObservable(of Integer)’具有合适的GetAwaiter方法。”


请注意,我可以等待
任务
,如
等待TaskEx.FromResult(42)
,但不能观察到。我已经使用对象浏览器来检查Rx库,但并没有GetWaiter扩展方法,而它确实包含在System.Reactive.Linq.Observable类中。有没有办法解决这个问题,或者我应该坚持使用
wait Observable.Return(42).ToTask

不幸的是,当您以.NET 4.5及以上版本为目标时,getwaiter和INotifyCompletion的实现才被编译到Rx中。在源代码中查看这一点


在这种情况下,您希望使用
ToTask()
将可观察到的内容转换为任务,或者使用提供的XXXAsync方法之一,例如
FirstAsync()

不幸的是,当您以.NET 4.5及更高版本为目标时,GetWaiter和INotifyCompletion的实现仅编译为Rx。在源代码中查看这一点


在这种情况下,您希望使用
ToTask()
将可观察对象转换为任务,或者使用提供的XXXAsync方法之一,例如
FirstAsync()

是的,如我在问题中所述,如果我转换为任务,我可以等待。可以直接等待可观察的Rx,但在我的情况下,它不能,甚至不可观察。FirstAsync-它失败,并出现相同的错误。@francezu13k50我已经更新了我的答案-恐怕这不会让你高兴…谢谢你的回答。我会继续以NET4.0为目标,因为我需要支持WindowsXP。但是,你现在真的不应该使用MS BCL异步目标包。目标包应仅用于针对.net 4.0。但是,截至2016年1月12日,Microsoft已放弃对.net 4.0的支持。@francezu13k50您的客户正在为Microsoft提供的扩展支持付费,对吗?如果是这样的话,请投入到这数百万美元中,并要求对.net 4.0的支持进行适当的补充。是的,如我在问题中所述,如果我转换为任务,我可以等待。可以直接等待可观察的Rx,但在我的情况下,它不能,甚至不可观察。FirstAsync-它失败,并出现相同的错误。@francezu13k50我已经更新了我的答案-恐怕这不会让你高兴…谢谢你的回答。我会继续以NET4.0为目标,因为我需要支持WindowsXP。但是,你现在真的不应该使用MS BCL异步目标包。目标包应仅用于针对.net 4.0。但是,截至2016年1月12日,Microsoft已放弃对.net 4.0的支持。@francezu13k50您的客户正在为Microsoft提供的扩展支持付费,对吗?如果是这样的话,那就加入到这数百万人的行列中,并要求对.NET4.0的支持进行适当的补充。