मैं कोड के इस टुकड़े एक अतुल्यकालिक HTTP अनुरोध बनाने के लिए है:टास्क fromAsync समय-समाप्त
public static void MakeRequest(Uri uri, Action<RequestCallbackState> responseCallback)
{
WebRequest request = WebRequest.Create(uri);
request.Proxy = null;
Task.Factory.FromAsync<WebResponse>(request.BeginGetResponse, request.EndGetResponse, null).ContinueWith(task =>
{
WebResponse response = task.Result;
Stream responseStream = response.GetResponseStream();
responseCallback(new RequestCallbackState(response.GetResponseStream()));
responseStream.Close();
response.Close();
});
}
यह काम करता है, लेकिन मैं एक अनुरोध का समय समाप्त सेट करना होगा। मैंने अनुरोध का उपयोग करने की कोशिश की। टाइमआउट लेकिन कुछ भी नहीं लगता है। क्या इस कोड में कार्य टाइमआउट सेट अप करने का कोई तरीका है?
एक नया टाइमआउट कॉलबैक जोड़ने के लिए संपादित किया गया। नए कोड:
HttpSocket.MakeRequest(new Uri("http://www.google.comhklhlñ"), callbackState =>
{
if (callbackState.Exception != null)
throw callbackState.Exception;
Console.WriteLine(GetResponseText(callbackState.ResponseStream));
});
Thread.Sleep(10000);
मैंने कोड में बदल दिया है जैसा कि आप प्रश्न में देख सकते हैं, लेकिन टाइमआउट काम नहीं कर रहा है। मुझे केवल समय के साथ एक कॉलबैक प्राप्त होता है, लेकिन इसके बाद कुछ भी नहीं होता है। –
@ डेविड: मैंने कुछ कामकाजी कोड डाल दिया ... –
मैं इसे काम नहीं कर सकता। मेरे पास एक विधि है। मुख्य विधि में सो जाओ। क्या यह समस्या हो सकती है? मैंने आपको वह कोड दिखाने के लिए पोस्ट अपडेट किया जिसका उपयोग मैं इसका परीक्षण करने के लिए कर रहा हूं। –