Я должен создать приложение, которое будет использовать Webclient несколько раз, чтобы получать каждые t-секундные данные с сервера.
Вот небольшой план, чтобы показать вам, что я делаю в моем приложении:
- Подключитесь к веб-клиенту "USER_LOGIN", который возвращает мне GUID (уникальный идентификатор пользователя). Я сохраняю его и сохраняю для использования в будущих вызовах веб-клиента.
- Подключитесь к веб-клиенту "USER_GETINFO", используя GUID, который я сохранил ранее в качестве параметра. Эта веб-служба возвращает массив строк, содержащих всю мою личную информацию о пользователе (мое имя, возраст, адрес электронной почты и т. Д.). => Я сохраняю информацию о массиве следующим образом: Textblock.Text = e.Result [2].
- Запуск Dispatcher.Timer с 2-х секундной отметкой, чтобы запустить мой цикл. (Цель этого - получить информацию и обновлять ее каждые 2 секунды)
- Подключитесь к веб-клиенту «USER GETFRIEND», который находится в моем таймере, предоставив ему GUID в качестве параметра. Он возвращает мне массив, заполненный информацией о моих друзьях (имя, адрес электронной почты, сообщение и т. Д.). Я вставил этот веб-клиент в таймер, чтобы мой список друзей обновлялся каждые 2 секунды.
Я могу создать все шаги без каких-либо ошибок до шага 3. Когда я вызываю веб-клиент "USER_GETFRIEND", я сталкиваюсь с двумя основными проблемами:
С одной стороны я заметил, что мое количество нитей резко увеличилось. => Я всегда думал, что когда WebClient завершит выполнение своих инструкций, он сам отключится, но, очевидно, этого не происходит в асинхронных вызовах.
И с другой стороны, я был удивлен, увидев, что при использовании одного и того же прокси для двух вызовов Webclient (т. Е. Если я объявляю test.MainSoapClient proxy = new test.MainSoapClient ()), данные, из которых я получу «USER_GETFRIEND» e.Result, был отправлен прямо в мой массив «USER_GETINFO». И поэтому мои имена и адреса электронной почты в пользовательском интерфейсе были заменены на одно и то же значение в массиве USER_GETFRIEND. Поэтому мое имя изменилось на электронную почту моих друзей и так далее ...
Я хотел бы знать, возможно ли закрыть вызов WebClient (или Thread), который я больше не использую, чтобы предотвратить какие-либо конфликты? Или, если у кого-то есть какие-либо предложения относительно моего кода и способа разработки приложения, не стесняйтесь предлагать.