Witam,

Piszę aplikację wykorzystującą api serwisu społecznościowego. Utknąłem na obsłudze wiadomości. Otóż, mam dwa procesy w jednej klasie - jeden sprawdzający czy są nowe wiadomości, drugi który jest uruchamiany przez użytkownika odpowiedzialny za wysłanie wiadomości. Zauważyłem, że jak te dwa procesy się na siebie nałożą - to wtedy wiadomość nie może zostać wysłana.

Każdy z tych procesów ma osobnego EventHandlera - każdy z nich ma też osobną metodą wysyłającą zapytanie.

Metoda inicjująca wysłanie wiadomości

 
        private void sendMessage()
        {
            string apiurl = "url_z_zapytaniem";
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(apiurl);
            request.ContentType = "application/x-www-form-urlencoded";
            request.Method = "POST";

            authInfo = Convert.ToBase64String(Encoding.UTF8.GetBytes(authInfo));
            request.Headers["Authorization"] = "Basic " + authInfo;
            var result = (IAsyncResult)request.BeginGetResponse(getResult, request);
        }

Metoda inicjująca pobranie wiadomości wygląda tak samo. Z jedną różnicą

 
            var result = (IAsyncResult)request.BeginGetResponse(getMassagesDetailed, request);

EventHandler wysyłania wiadomości:

 
            HttpWebRequest request = result.AsyncState as HttpWebRequest;
            if (request != null)
            {
                try
                {
                    WebResponse response = request.EndGetResponse(result);
                    string status = ((HttpWebResponse)response).StatusDescription + "\r\n";

                    Stream dataStream = response.GetResponseStream();
                    StreamReader reader = new StreamReader(dataStream);

                    string personal = reader.ReadToEnd().Trim();

                    // magic
                 }

                catch (Exception e) { }
            }

EventHandler pobierania wiadomości:

        private void getMassagesDetailed(IAsyncResult result)
        {
            HttpWebRequest request = result.AsyncState as HttpWebRequest;
            if (request != null)
            {
                try
                {
                    WebResponse response = request.EndGetResponse(result);
                    string status = ((HttpWebResponse)response).StatusDescription + "\r\n";

                    Stream dataStream = response.GetResponseStream();
                    StreamReader reader = new StreamReader(dataStream);

                    string personal = reader.ReadToEnd().Trim();

                    // obróbka odpowiedzi
                }

                catch (WebException e)
                {
                    return;
                }
            }
        } 

Kiedy te dwie procedury się na siebie nałożą - to dostają błąd od api informujący mnie o tym, że podałem złe parametry. Jednak kiedy zakomentuje wywołanie jednej z tych metod - wszystko działa dobrze.

Dziękuję za wszelką pomoc. (: