Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.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
C# 停止从SubscriptionClient接收消息_C#_Azure_Azureservicebus - Fatal编程技术网

C# 停止从SubscriptionClient接收消息

C# 停止从SubscriptionClient接收消息,c#,azure,azureservicebus,C#,Azure,Azureservicebus,如何停止从设置为事件驱动消息泵的订阅客户端接收消息?我目前有一些代码可以工作,但是当我连续运行两个测试时,它们会出现二次中断。我敢肯定,在我创建的第一个实例中,仍在从订阅中提取消息 您可以调用SubscriptionClient.Close()停止进一步处理消息 代码中的注释中也指出: 在客户端上调用Close()将停止泵 我看了看,看到了完全相同的行为。即使关闭订阅客户端,消息泵也不会停止处理消息的尝试。如果您的消息处理程序试图对消息执行.Complete或放弃,它将抛出异常,因为客户端已关

如何停止从设置为事件驱动消息泵的订阅客户端接收消息?我目前有一些代码可以工作,但是当我连续运行两个测试时,它们会出现二次中断。我敢肯定,在我创建的第一个实例中,仍在从订阅中提取消息


您可以调用
SubscriptionClient.Close()
停止进一步处理消息

代码中的注释中也指出:

在客户端上调用Close()将停止泵


我看了看,看到了完全相同的行为。即使关闭订阅客户端,消息泵也不会停止处理消息的尝试。如果您的消息处理程序试图对消息执行
.Complete
放弃
,它将抛出异常,因为客户端已关闭。需要一种方法来阻止泵工。

你需要做两件事

首先,调用subscriptionClient.Close(),这将最终(但不是立即)停止消息泵

其次,在收到的消息回调中,检查客户端是否已关闭,如下所示:

if (subscriptionClient.IsClosed)
    return;

-1这不起作用。最后一条消息仍然通过OnMessage回调传递,并且在接收方方法尝试完成它时抛出异常。您是否测试了接受的答案?
if (subscriptionClient.IsClosed)
    return;