मैं HttpListener का उपयोग कर रहा हूं और मेरी संदर्भ वस्तु प्राप्त करने के लिए BeginGetContext का उपयोग कर रहा हूं। मैं अपने एचटीपी लिस्टनर को बंद करना चाहता हूं लेकिन अगर मैं श्रोता पर Close करने का प्रयास करता हूं तो मुझे अपवाद मिलता है और यह मेरे प्रोग्राम से बाहर निकलने का कारण बनता है।स्वच्छता से संपर्क करें HttpListener's BeginGetContext विधि
using System;
using System.Net;
namespace Sandbox_Console
{
class Program
{
public static void Main()
{
if (!HttpListener.IsSupported)
{
Console.WriteLine("Windows XP SP2 or Server 2003 is required to use the HttpListener class.");
return;
}
// Create a listener.
HttpListener listener = new HttpListener();
listener.Prefixes.Add("http://vwdev.vw.local:8081/BitsTest/");
listener.Start();
Console.WriteLine("Listening...");
listener.BeginGetContext(Context, listener);
Console.ReadLine();
listener.Close(); //Exception on this line, but not shown in Visual Studio
Console.WriteLine("Stopped Listening..."); //This line is never reached.
Console.ReadLine();
}
static void Context(IAsyncResult result)
{
HttpListener listener = (HttpListener)result.AsyncState;
HttpListenerContext context = listener.EndGetContext(result);
context.Response.Close();
listener.BeginGetContext(Context, listener);
}
}
}
कार्यक्रम listener.Close()
तथापि त्रुटि कभी नहीं दृश्य स्टूडियो में दिखाया जाता है पर एक अपवाद फेंकता है, केवल टिप्पणी मैं मिलता है डिबग आउटपुट स्क्रीन में निम्नलिखित:
का एक पहला मौका अपवाद System.dll
प्रोग्राम '[2568] Sandbox Console.vshost.exe: प्रबंधित (v4.0.30319)' कोड 0 (0x0) से बाहर निकला है 'System.ObjectDisposedException' टाइप करें।
मैं
Application: Sandbox Console.exe Framework Version: v4.0.30319 Description: The process was terminated due to an unhandled exception. Exception Info: System.ObjectDisposedException Stack: at System.Net.HttpListener.EndGetContext(System.IAsyncResult) at Sandbox_Console.Program.Context(System.IAsyncResult) at System.Net.LazyAsyncResult.Complete(IntPtr) at System.Net.ListenerAsyncResult.WaitCallback(UInt32, UInt32, System.Threading.NativeOverlapped*) at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)
मैं क्या करने की आवश्यकता है इसलिए मैं अपने HttpListener सफाई से बंद कर सकते हैं Windows ईवेंट व्यूअर से वास्तविक execption प्राप्त करने में सक्षम था?
तो अपने async 'स्थिर शून्य जोड़ सकते हैं निपटारा संदर्भ 'कभी नहीं बुलाया जाता है? .. कुछ ख़राब हो गया है .. 'ऑब्जेक्ट डिस्प्ले एक्सेप्शन' फेंक दिया जाता है जब आप पहले से निपटने वाले ऑब्जेक्ट का निपटान करने का प्रयास करते हैं। कुछ मुझे बताता है कि आपके श्रोता का प्रारंभिक टूटा हुआ है। –
@ सिमन व्हाइटहेड एएच एएच! जब आप बंद करते हैं तो संदर्भ को आखिरी बार बुलाया जाता है। एक समाधान लिखना। –