Вы можете понизить приоритет вашего фонового потока, так что он будет выгрузил больше ОС. Если у вас есть знания предметной области, которые заставляют вас хотеть контролировать, когда он прерывается, вы можете использовать Thread.Sleep (0), который отменяет ваш временной интервал, если другой поток ожидает.
Application.DoEvents перекачивает очередь сообщений Windows. Это заставит ваше приложение реагировать на такие события, как нажатие клавиш или изменение размеров окна. Thread.Sleep приведет к прерыванию вашего потока (или, возможно, нет, в случае Thread.Sleep (0)).
Также читайте Threading в C #
Правильный способ сделать это - использовать обратные вызовы. См. Модель Silverlight использования асинхронных методов (например, для получения данных веб-службы). Я знаю, что на этот вопрос "дан ответ", но ответ не идеален ИМХО.