EDYCJA: W systemie Windows Phone wywoływam HttpWebRequest.BeginGetResponse
w oddzielnym wątku, który został uruchomiony przez . Następnie dzwonię do MessageBox.Show(). Problem polega na tym, że wywołanie zwrotne nie jest wywoływane, dopóki nie odrzucę MessageBox.Wywołanie funkcji HttpWebRequest jest blokowane przez interfejs użytkownika
void GetResponseCallback(IAsyncResult asynchronousResult) {
//Not getting called until I dismiss MessageBox
}
void getWeb() {
Thread.Sleep(1000);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(url));
request.Method = "GET";
request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
}
new Thread(getWeb).Start(); //Start a new thread
MessageBox.Show();
Czy MessageBox blokuje wywołanie zwrotne w wątku tła?
małe pytanie: dlaczego utworzyć oddzielny wątek 'nowy wątek (getWeb)' dla metody 'getWeb()', że jest już asynchronicznie przez siebie ('request.BeginGetResponse (...)' metoda wykonuje swoje zadanie w tle)? –
Pomysł polega na tym, że będę mieć pętlę na wątku w tle, która będzie nieprzerwanie wysyłać żądania sieciowe z przerwą pomiędzy poszczególnymi żądaniami o kilka minut. Czy rozwiąże on mój problem, jeśli zadzwonię do BeginGetResponse w wątku UI? – user1740959
Może to mieć związek z tym, co przychodzi * po * wywołaniu, czy jest to metoda, która nigdy nie jest wywoływana, czy trafiasz w metodę oddzwaniania i kod, który przekazuje połączenie do interfejsu użytkownika, nie jest wywoływany? Wygląda na to, że masz jakiś impas. – casperOne