- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Azure 服务总线命名空间中,有一个 SubscriptionClient
类型,具有以这种方式启动 MessageSession 的方法:-
MessageSession session = subscriptionClient.AcceptMessageSession(...);
这是同步版本,它返回一个MessageSession。该库还提供了一个异步版本BeginAcceptMessageSession()。这个让我很困惑,因为它调用回调,传入 IAsyncResult 和您希望传递的任何状态对象。就我而言,我传递 SubscriptionClient 实例,以便可以在 SubscriptionClient 上调用 EndAcceptMessageSession()。 BeginAcceptMessageSession() 的返回类型为 void。
如何访问通过 BeginAcceptMessageSession() 接受的 MessageSession?我在回调的结果参数中返回的是我的 SubscriptionClient 实例,我需要它才能通过 EndAcceptMessageSession() 终止 BeginAcceptMessageSession()。
找不到 MessageSession 引用。该文档在这方面没有帮助。在Google上搜索只显示了不到3页的搜索结果,其中大部分只是MSDN上对该方法本身的在线描述。我查看了 AsyncManager.Parameters,它也是空的。
有谁知道如何调用 BeginAcceptMessageSession() 以便我可以获得对由此创建的 MessageSession 的引用?
最佳答案
您应该像这样调用该方法:
IAsyncResult
和 SubscriptionClient
的方法调用 begin 方法。IAsyncResult
调用 EndAcceptMessageSession
以获取 MessageSession
您在这里看到的是异步编程模型的标准实现。
private static void Do()
{
SubscriptionClient client = ...
client.BeginAcceptMessageSession(AcceptDone, client);
}
public static void AcceptDone(IAsyncResult result)
{
var subscriptionClient = result.AsyncState as SubscriptionClient;
if (subscriptionClient == null)
{
Console.WriteLine("Async Subscriber got no data.");
return;
}
var session = subscriptionClient.EndAcceptMessageSession(result);
...
subscriptionClient.Close();
}
关于Azure 服务总线 - SubscriptionClient.AcceptMessageSession() 与 SubscriptionClient.BeginAcceptMessageSession(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12639751/
该文档使人们相信,如果超过 serverWaitTime 参数中指定的时间量,BeginAcceptMessageSession() 将抛出 TimeoutException 。这似乎并不总是发生。
在 Azure 服务总线命名空间中,有一个 SubscriptionClient 类型,具有以这种方式启动 MessageSession 的方法:- MessageSession session =
在 Azure 服务总线命名空间中,有一个 SubscriptionClient 类型,具有以这种方式启动 MessageSession 的方法:- MessageSession session =
我是一名优秀的程序员,十分优秀!