में कॉल मैं follwing http अनुरोध विधिडीबगर HttpClient.GetAsync async के बाद बंद हो जाता है() दृश्य स्टूडियो
public async Task<HttpContent> Get(string url)
{
using (HttpClient client = new HttpClient())
// breakpoint
using (HttpResponseMessage response = await client.GetAsync(url))
// can't reach anything below this point
using (HttpContent content = response.Content)
{
return content;
}
}
हालांकि, डिबगर 2 टिप्पणी नीचे दिए गए कोड लंघन किया जा रहा है परीक्षण करने के लिए कोशिश कर रहा हूँ। मैं विजुअल स्टूडियो 2015 आरसी, किसी भी विचार का उपयोग कर रहा हूँ? मैं भी कार्य विंडो जाँच करने की कोशिश की और कुछ भी नहीं देखा था
संपादित करें: मिला समाधान
using System;
using System.Net.Http;
using System.Threading.Tasks;
namespace ConsoleTests
{
class Program
{
static void Main(string[] args)
{
Program program = new Program();
var content = program.Get(@"http://www.google.com");
Console.WriteLine("Program finished");
}
public async Task<HttpContent> Get(string url)
{
using (HttpClient client = new HttpClient())
using (HttpResponseMessage response = await client.GetAsync(url).ConfigureAwait(false))
using (HttpContent content = response.Content)
{
return content;
}
}
}
}
बाहर कर देता है कि क्योंकि यह एक सी # कंसोल अनुप्रयोग यह समाप्त हो गया के बाद मुख्य थ्रेड समाप्त होता है मुझे लगता है कि, क्योंकि एक जोड़ने के बाद था कंसोल। रीडलाइन() और थोड़ा इंतजार, अनुरोध वापस आ गया। मैंने अनुमान लगाया कि सी # मेरे कार्य निष्पादित होने तक प्रतीक्षा करेगा और इससे पहले खत्म नहीं होगा, लेकिन मुझे लगता है कि मैं गलत था। अगर कोई यह बता सकता है कि ऐसा क्यों हुआ तो यह अच्छा होगा।
ऐसा इसलिए है क्योंकि आपके पास एक और async विधि 'client.GetAsync (url)' है। आपको उस विधि के अंदर ब्रेकपॉइंट भी जोड़ना चाहिए। –
मुझे ब्रेकपॉइंट बिल्कुल कहां जोड़ना चाहिए? मैंने अपनी लाइन विधि को प्रतीक्षा करने के लिए हर पंक्ति पर ब्रेकपॉइंट जोड़ने की कोशिश की, लेकिन डीबगर अभी भी मेरे दूसरे GetAsync कॉल से परे कुछ भी छोड़ देता है। –
@sgarcia: मेरा मानना है कि यह प्रश्न एक डुप्लिकेट है। हालांकि, अगर यह गलत है, तो बस मुझे बताएं और मैं फिर से खोलूंगा। –