Так как вы используете WCF RIA.Я должен предположить, что вы реализуете две части:
- Веб-служба WCF
- Клиент Silverlight, который использует службу WCF.
Итакэто означает, что у вас есть два приложения.Служба работает на IIS, а Silverlight работает в веб-браузере.Эти приложения имеют разные жизненные циклы.Приложение Silverlight начинает жить, когда оно загружается на веб-странице, и умирает, когда страница закрыта (или происходит исключение).С другой стороны (на стороне сервера), срок службы веб-службы WCF довольно большой.Ваше приложение начинает жить, когда запрашивается услуга, и оно умирает, когда запрос завершен.
В вашем случае ваш запрос к серверу завершается, когда завершается метод SearchAndStore .Таким образом, когда этот конкретный метод запускается, вы создаете поток, который запускается в фоновом режиме (на сервере), и ваш метод продолжает выполнение, которое, скорее всего, завершится через пару строк.
Если я прав, тебе не нужно этого делать.Вы можете вызывать свой метод без использования потока, теоретически это не имеет значения, если для ответа требуется некоторое время.это потому, что приложение Silvelight (на клиенте) не будет ждать.В Silverlight все операции являются асинхронными (это означает, что они выполняются в своем собственном потоке).Поэтому, когда вы вызываете метод обслуживания с клиента, вам нужно только ждать, пока не будет вызван обратный вызов.
Если это действительно занимает много времени, вы, скорее всего, будете искать механизм, позволяющий поддерживать связь между вашим клиентом Silverlight и вашим веб-сервером дольше.Я думаю, изменив конфигурацию сервиса.
Вот пример того, что я говорю: https://github.com/hmadrigal/CodeSamples/tree/master/wcfria/SampleWebApplication01 В этом примере вы можете увидеть разное время на стороне клиента и сервера.Вы нажимаете кнопку и должны ждать 30 секунд, чтобы получить ответ от сервера.
Надеюсь, это поможет, С уважением, Гербер