小编top*_*olm的帖子

BrokeredMessage处理完毕

我将BrokeredMessage标记为Complete时遇到问题.

简单的代码,按预期工作:

 private void OnMessageArrived(BrokeredMessage message)
 {
     var myObj= message.GetBody<MyObject>();

     //do things with myObj

     message.Complete();            
 }
Run Code Online (Sandbox Code Playgroud)

当我尝试等待用户完成myObj时,我得到异常:

已经处理了breakredmessage

代码如下:

 private Dictionary<long, BrokeredMessage> ReceivedMessages;      
 ReceivedMessages = new Dictionary<long, BrokeredMessage>();

 private void OnMessageArrived(BrokeredMessage message)
 {
     var myObj= message.GetBody<MyObject>();
     ReceivedMessages.Add(myObj.Id, message);

     //do things with myObj      
 }

 private void Button_Click(object sender, RoutedEventArgs e)
 {
     // get myObj on which user clicked

     ReceivedMessages[myObj.Id].Complete();
     ReceivedMessages.Remove(myObj.Id);        
 }
Run Code Online (Sandbox Code Playgroud)

对我来说,看起来ServiceBus在某种程度上失去了与c#中实际对象的连接

类似于EF中的分离对象的东西,只是在这种情况下,对象与ServiceBus分离

编辑:

只有在用户点击按钮后才能将消息标记为完成,这一点非常重要.如果AC关闭(或类似的事情),我希望消息仍然保留在服务总线主题上,以便下次用户启动应用程序时,他将再次接收他未处理的消息.

c# servicebus brokeredmessage

5
推荐指数
1
解决办法
2012
查看次数

MongoDb c#驱动连续SelectMany

如果我有对象,让它们称为Group,其中包含一些其他对象的列表,我将其称为Brand,并且该对象具有一个名为Model的对象列表。

有没有办法只获取使用 MongoDb c# 驱动程序的模型列表。

我多次尝试使用SelectMany但没有成功。如果我放了多个SelectMany,我总是得到一个空列表。

代码应该是不言自明的。最后是解释什么让我感到困惑的评论。

class Group
{
    [BsonId(IdGenerator = typeof(GuidGenerator))]
    public Guid ID { get; set; }
    public string Name { get; set; }
    public List<Brand> Brands { get; set; }
}

class Brand
{
    public string Name { get; set; }
    public List<Model> Models { get; set; }
}

class Model
{
    public string Name { get; set; }
    public int Produced { get; …
Run Code Online (Sandbox Code Playgroud)

c# mongodb-.net-driver

1
推荐指数
1
解决办法
2060
查看次数