C# 在什么情况下SubscriptionClient.GetMessageAsync的结果可以为空?

C# 在什么情况下SubscriptionClient.GetMessageAsync的结果可以为空?,c#,azure,servicebus,C#,Azure,Servicebus,我正在将Azure service bus代理与WindowsAzure.ServiceBus Nuget包版本3.4.4一起使用 当我调用与未发布消息的订阅连接的SubscriptionClient时,返回的任务在大约一分钟后完成,结果为null 我希望任务永远不会在null 在什么条件下,此方法返回的任务可以使用null完成?您可以将时间跨度传递给ReceiveAsync,以指定您希望等待消息的时间长度。默认情况下,它可能是一分钟 如果你希望每两周至少收到一条信息,你可以这样做: clie

我正在将Azure service bus代理与WindowsAzure.ServiceBus Nuget包版本3.4.4一起使用

当我调用与未发布消息的订阅连接的
SubscriptionClient
时,返回的任务在大约一分钟后完成,结果为
null

我希望任务永远不会在
null


在什么条件下,此方法返回的任务可以使用
null
完成?

您可以将时间跨度传递给
ReceiveAsync
,以指定您希望等待消息的时间长度。默认情况下,它可能是一分钟

如果你希望每两周至少收到一条信息,你可以这样做:


client.ReceiveAsync(TimeSpan.FromDays(14));

您正在使用的API假定您希望轮询服务总线以获取消息;这意味着您必须定期调用服务总线端点才能接受消息。没有消息时,您将收到空响应。我不建议调用
client.ReceiveAsync(TimeSpan.FromDays(14)
,因为这将使单个请求在该时间段内保持打开状态。相反,空结果是预期行为,您应该在连续循环中调用
ReceiveAsync

但是,还有一个API可以为您执行此循环:
OnMessage


只需确保程序的主线程不退出。

没有
GetMessageAsync
。您已链接到
ReceiveAsync
,其中在其文档部分包含了
null
可能被返回的原因。因此不清楚这里的问题是什么。感谢@Damien\u我确实指的是
ReceiveAsync
,但是我在它的文档中没有看到任何关于
null
的内容好吧,我也有点误读了文档-它自己的文档只是说它是一个异步接收。但是,如果你看
receive
的文档,它记录了它可以返回
null
的情况。所以把2+2一起…啊,谢谢@Damien_这个不信的人!我从没想过API会这样工作!