Предполагая, что у вас нет известного числа изображений или некоторых других данных, известных программе во время выполнения, чтобы проверить, является ли URI изображения допустимым, способ справиться с этим будет сделать вызов файловой системы на сервер, чтобы увидеть, существует ли изображение, прежде чем пытаться загрузить его (возможно, путем создания службы, которая возвращает, существует ли данный файл), что кажется гораздо менее эффективным, чем простая попытка загрузить изображение. Поскольку этот вызов службы должен быть асинхронным (так как все вызовы службы выполняются в Silverlight), вы все равно захотите реструктурировать свой код, чтобы прослушивать события, хотя вы могли бы сделать это довольно замкнутым циклом.
Большой вопрос, который я думаю, состоит в том, почему: если вы пытаетесь уменьшить накладные расходы на выполнение остальной части вашего кода, это будет только контрпродуктивно, так как несколько сетевых вызовов почти наверняка потребуют больше накладных расходов / времени, чем любой код, который вы будет работать.
Единственный другой метод, который приходит на ум, - это написать сервис, который возвращает некий сложный объект, содержащий как ваше изображение, так и флаг, чтобы сообщить вам, доступно ли следующее изображение. Это кажется излишним, но, возможно, стоит посмотреть, действительно ли вам нужно узнать, есть ли следующее изображение, прежде чем пытаться его загрузить. Опять же, я хотел бы отметить, что этот сервис должен вызываться асинхронно, поэтому вы в любом случае прослушиваете события, и создаваемый вами сервис не совсем тривиален (вам понадобится какой-нибудь ребенок из WCF). сервис, который будет возвращать сложный объект). Я также считаю, что это решение не стоит проблем.