द्वारा अवरोधित किया गया है: विंडोज फोन पर मैं HttpWebRequest.BeginGetResponse
पर एक अलग थ्रेड पर पर कॉल कर रहा हूं। फिर मैं MessageBox.Show() को कॉल करता हूं। समस्या यह है कि जब तक मैं संदेशबॉक्स को खारिज नहीं करता तब तक कॉलबैक नहीं कहा जाता है।HttpWebRequest कॉलबैक UI
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();
क्या संदेशबॉक्स पृष्ठभूमि थ्रेड पर कॉलबैक को अवरुद्ध कर रहा है?
थोड़ा प्रश्न के अंदर एक इस जगह चाहते हैं: तुम क्यों अलग थ्रेड बना सकता हूँ 'नई थ्रेड (getWeb)' विधि के लिए 'getWeb()' कि पहले से ही async है ('request.BeginGetResponse (...) 'विधि पृष्ठभूमि में अपना काम करता है)? –
विचार यह है कि मेरे पास पृष्ठभूमि थ्रेड पर एक लूप होगा जो प्रत्येक अनुरोध के बीच कुछ मिनटों के विराम के साथ लगातार वेब अनुरोध भेजता है। यदि मैं UI थ्रेड में BeginGetResponse को कॉल करता हूं तो क्या यह मेरी समस्या का समाधान करेगा? – user1740959
इसे * कॉल * के बाद भी क्या करना पड़ सकता है, क्या यह विधि कभी भी नहीं कहा जा रहा है, या आप कॉलबैक विधि और कोड को मारते हैं जो यूआई को कॉल को मार्शल करता है उसे कॉल नहीं किया जाता है? ऐसा लगता है कि आपके पास कुछ प्रकार का डेडलॉक चल रहा है। – casperOne