Взгляните на метод ApproximateMessageCount .Это должно вернуть количество сообщений в очереди, включая невидимые сообщения (например, обрабатываемые).
Майк Вуд писал об этой тонкости вместе с краткой информацией о методе Clear очереди, здесь .
Тем не менее, вы можете выбрать другой механизм управления рабочим процессом.Может быть, строка таблицы, где ваш ключ строки равен некоторому идентификатору перехода элемента из нескольких очередей, а отдельные свойства являются флагами состояния.Это позволяет отслеживать сбойные части транзакции (скажем, 9 из 10 элементов очереди обрабатываются нормально, 10-й сбой; вы все равно можете удалить 10-й элемент очереди, но установите для его флага состояния значение «Сбой», что позволит вам разобраться с этим сценарием.соответственно).Также: предположим, что вы используете ту же очередь для обработки другой «транзакции» (это означает, что очередь снова имеет ненулевую длину).Используя отдельный объект, такой как строка таблицы, вы все равно можете определить, что ваша «транзакция» завершена, даже если есть дополнительные сообщения очереди.