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. (: