में कदम नहीं उठा रहा है मेरे पास यह सरल एसिंक कॉल है जो मैं कर रहा हूं। मैं DownloadDataTaskAsync
विधि पर कॉल का पालन करना चाहता हूं और माइक्रोसॉफ्ट .NET फ्रेमवर्क स्रोत कोड में कदम उठा सकता हूं।विजुअल स्टूडियो डीबगर .NET फ्रेमवर्क स्रोत कोड
using System;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace WhereIsTheTaskSchedulerHere
{
class Program
{
static void Main(string[] args)
{
var task = GetData("http://sathyaish.net");
var buffer = task.Result;
var data = Encoding.ASCII.GetString(buffer);
Console.WriteLine(data);
Console.WriteLine("\nPress any key to continue...");
Console.ReadKey();
}
async static Task<byte[]> GetData(string url)
{
var client = new WebClient();
var data = await client.DownloadDataTaskAsync(url);
return data;
}
}
}
मैं मुद्दा यह है कि कोड कॉल System.Net.WebClient.DownloadBits
विधि जब तक परावर्तक में कॉल का पालन किया। अगर कॉल को असीमित रूप से निष्पादित करने के लिए किया गया था, तो यह विधि System.Net.WebRequest
कक्षा पर एसिंक्रोनस प्रोग्रामिंग मॉडल (एपीएम) विधि BeginGetResponse
पर कॉल करके थ्रेडपूल थ्रेड पर काम को आगे शेड्यूल करती है।
यहां परावर्तक से DownloadBits
विधि का कोड है।
private byte[] DownloadBits(WebRequest request, Stream writeStream, CompletionDelegate completionDelegate, AsyncOperation asyncOp)
{
WebResponse response = null;
DownloadBitsState state = new DownloadBitsState(request, writeStream, completionDelegate, asyncOp, this.m_Progress, this);
if (state.Async)
{
request.BeginGetResponse(new AsyncCallback(WebClient.DownloadBitsResponseCallback), state);
return null;
}
response = this.m_WebResponse = this.GetWebResponse(request);
int bytesRetrieved = state.SetResponse(response);
while (!state.RetrieveBytes(ref bytesRetrieved))
{
}
state.Close();
return state.InnerBuffer;
}
तो, मैं दृश्य स्टूडियो में दो breakpoints की स्थापना:
1) Sytem.Net.WebClient.DownloadBits
पद्धति पर एक; और अन्य
2) System.Net.WebRequest.BeginGetResponse
विधि पर।
मैं निम्नलिखित की दोबारा जांच कर।
1) मैं दृश्य स्टूडियो उपकरण में डिबगिंग सेटिंग को कॉन्फ़िगर यही कारण है कि -> विकल्प सही ढंग से डिबगर .NET फ़्रेमवर्क स्रोत से निकलने के लिए अनुमति देता है संवाद।
2) मैं डाउनलोड करने और डिबग प्रतीकों में से कैशिंग एक उचित स्थान के लिए सक्षम था।
3) मैं स्थान की दोबारा जांच कर और सभी विधानसभाओं मेरी कोड जिक्र किया गया और विशेष रूप से System.dll
जो तरीकों कि मेरी breakpoints लगा दी गई थी के लिए के लिए डीबग प्रतीक थे कि देखा।
हालांकि, जब मैं पर डिबगिंग के साथ कोड भाग गया, यह शिकायत की कि यह System.dll
के लिए डिबग प्रतीकों नहीं पा सके। इसलिए, मैंने लोड बटन पर क्लिक किया ताकि इसे माइक्रोसॉफ्ट सिंबल सर्वर से रनटाइम पर डाउनलोड किया जा सके।
, यह DownloadBits
विधि में तोड़ने, जैसा कि मैंने कॉल स्टैक विंडो से और संदेश यह आउटपुट विंडो कि मैं इसे प्रिंट करने के लिए कहा था में छपी से देखा किया था, जबकि ब्रेकपॉइंट सेट अप करते समय, यह उस विधि के स्रोत में नहीं दिखाया या कदम नहीं था।
मैं दायाँ क्लिक किया है मेनू आइटम क्लिक करने के लिए लोड चिह्न कॉल स्टैक विंडो में DownloadBits
विधि के ढेर फ्रेम, लेकिन यह वहाँ नहीं था। नतीजतन, स्रोत कोड मेनू आइटम पर भी अक्षम किया गया था।
मैं कैश साफ़ कर और यह सब विधानसभाओं डाउनलोड नए सिरे से लेकिन है कि या तो नहीं मदद की है करते हैं।
मैं विजुअल स्टूडियो सामुदायिक संस्करण 2015 का उपयोग कर रहा हूं और मेरा प्रोग्राम .NET ढांचे के v4.5.2 को लक्षित कर रहा है और मैं पहले इस सेट का उपयोग करके .NET स्रोत असेंबली में कदम उठाने में सक्षम हूं।
मुझे क्या याद आ रही है?
संदर्भ स्रोत वेबसाइट 22 अप्रैल के आसपास विंडोज अपडेट के माध्यम से दिए गए .NET अद्यतन के बाद सिंक से बाहर हो गई है। एक बहुत ही आम दुर्घटना, [इस पोस्ट] में उपलब्ध संकेतों का निदान (http://stackoverflow.com/a/27655501/17034) .. –
@ हंसपैसेंट बहुत बहुत धन्यवाद। ** मॉड्यूल ** विंडो में संदर्भ मेनू से ** प्रतीक लोड जानकारी ** पर क्लिक करने पर, ** प्रतीक लोड जानकारी ** संवाद रिपोर्ट करता है कि यह मेरे स्थानीय से 'System.dll' के लिए डीबग प्रतीकों को लोड करने में सक्षम था कैश। हालांकि, यह अभी भी स्रोत में कदम नहीं उठाता है। –
@ हंसपैसेंट बीटीडब्ल्यू ने उपयोगकर्ता वॉयस आइटम को 3 वोटों से ऊपर उठाया। :-) –