BrokeredMessage disposed

Viewed 2486

I have a trouble marking my BrokeredMessage as Complete.

Simple code that works like expected:

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

     //do things with myObj

     message.Complete();            
 }

When I try to wait for user to finish with myObj I get exception:

brokeredmessage has been disposed

Code below:

 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);        
 }

To me it looks like ServiceBus somehow lose connection to actual object in c#

Something similar to detached object in EF, just in this case object is detached from ServiceBus

EDIT:

It is important to me to mark message as complete only after user click button. In case AC goes down (or similar things) I want messages still remain on Service Bus Topic so that next time user start app he will again receive messages that he did not processed.

4 Answers
Related