EndReceive
просто означает, что сообщение было успешно доставлено - это не означает, что вы смогли с ним что-нибудь сделать.
Звучит так, как будто вы рассматриваете асинхронное транзакционное чтение из MSMQ, в котором вы только завершите получение (удаляете сообщение из очереди раз и навсегда) после полной обработки вашего сообщения, что бы это ни значило в вашем контексте , Но асинхронное чтение транзакций невозможно - см. Документацию MSDN :
Не использовать асинхронный вызов
Начните получать с транзакций. если ты
хочу выполнить транзакцию
асинхронная операция, вызов
BeginPeek, и поместите транзакцию и
(синхронный) метод приема
в обработчике событий, который вы создаете
для заглядывания.