开发者

Can multiple WebClient interfere with each other?

开发者 https://www.devze.com 2023-01-13 20:38 出处:网络
I must build a Application that will use Webclient multiple times to retrieve every \"t\" seconds information from a server.

I must build a Application that will use Webclient multiple times to retrieve every "t" seconds information from a server.

Here is a small plan to show you what I'm doing in my application:

  1. Connect to the Web Client "USER_LOGIN" that returns me a GUID(user unique ID). I save it and keep it to use it in future Web Client calls.
  2. Connect to the Web Client "USER_GETINFO" using the GUID I saved before as parameter. This Web Service returns an array of strings holding all my personal user information( my Name, Age, Email, etc...). => I save the array information this way: Textblock.Text = e.Result[2].
  3. Starting a Dispatcher.Timer with a 2 seconds Tick to start my Loop. (Purpose of this is to retrieve information and update it every 2 seconds)
  4. Connect to the Web Client "USER GETFRIEND", wich is in my Timer, giving him the GUID as parameter. It returns me an array filled wi开发者_如何学Pythonth my friends informations(Name, email, message, etc...). I inserted this WebClient in the timer so my friend list refreshes every 2 seconds.

I am able to create all the steps without any error until step 3. When I call the "USER_GETFRIEND" Web Client I am facing two major problems:

  • On one side I noticed that my number of Thread increased dramatically. => I always thought that when a WebClient had finished its instructions it would shut down by itself, but apparently that does not happen in Asyncronous calls.

  • And on the other side I was surprised to see that using the same proxy for two Webclient calls(ie: if i declare test.MainSoapClient proxy = new test.MainSoapClient()), the data i would retrieve from "USER_GETFRIEND" e.Result, was sent directly to my "USER_GETINFO" array. And so my Name and Email adresses on the UI were replaced by the same value in the USER_GETFRIEND array. So my Name is changed to my friends email and so on...

I would like to know if it's possible to close a WebClient call(or Thread) that I am not using anymore to prevent any conflicts? Or if someone has any suggestion concerning my code and the way i should develop my application please feel free to propose.


I got the answer a few weeks ago and figured out it was important to answer my own question.

My whole problem was that I wasn't unsubscribing from my asynchronous calls and that I was using the same proxy class from "Add Service reference":

So when I was using:

proxy.webservice += new Eventhandler<whateverinhere>(my_method);

I never did:

proxy.webservice -= new Eventhandler<whateverinhere>(my_method);

Hope it will help someone.

0

精彩评论

暂无评论...
验证码 换一张
取 消