Это распространенный шаблон / проблема с Silverlight, так как практически все «асинхронно» (по уважительным причинам).
В зависимости от того, как запускаются операции добавления и удаления, вы можете ставить задачи в очередь (например,список делегатов) и пусть каждая задача выполнит следующую задачу из списка по завершении.
Альтернатива может показаться немного сложной, но решение, которое мы придумали, заключается в создании класса SequentialAsynchronousTaskManager, который работаетаналогично классу SilverlightTest, который использует методы EnqueueConditional () для добавления условий ожидания и EnqueueCallback () для выполнения кода.
Он в основном содержит список делегатов (которые могут быть простыми лямбда-выражениями) ивыполняет его регулярно, пока он не вернет true (EnqueueConditional) или просто не выполнит некоторый код (EnqueueCallback).