मैं सी # 4 में एक कंसोल ऐप लिख रहा हूं और अपने प्रोग्राम को गहराई से रद्द करना चाहता हूं और Ctrl + C दबाया जाता है। निम्नलिखित कोड मैंने कई बार पहले उपयोग किया है, लेकिन अब इसे .NET 4 में उपयोग करने का प्रयास करते समय, ऐसा लगता है कि एक अजीब अनचाहे अपवाद हो रहा है।मैं .NET 4 में Console.CancelKeyPress का उपयोग कैसे करूं? (.NET 3.5 और नीचे ठीक काम करता है)
namespace ConsoleTest
{
class Program
{
private static bool stop = false;
static void Main(string[] args)
{
System.Console.TreatControlCAsInput = false;
System.Console.CancelKeyPress += new ConsoleCancelEventHandler(Console_CancelKeyPress);
while (!stop)
{
System.Console.WriteLine("waiting...");
System.Threading.Thread.Sleep(1000);
}
System.Console.WriteLine("Press any key to exit...");
System.Console.ReadKey(true);
}
static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e)
{
stop = true;
e.Cancel = true;
}
}
}
अगर मैं .NET 3.5 के लक्ष्य फ्रेमवर्क बदलने के लिए, यह काम करता है।
संपादित करें: यह इस व्यक्ति समान समस्या दिखाई दे रहा है लगता है: http://johnwheatley.wordpress.com/2010/04/14/net-4-control-c-event-handler-broken/
अपवाद क्या है? यह कहां होता है? आप वीएस (डीबग -> अपवाद या Ctrl + Alt + E) में अपवाद संवाद में विभिन्न अपवादों को तोड़ने में सक्षम कर सकते हैं। –
यह एक सामान्य अपवाद नहीं है। मैंने जो लिंक जोड़ा है उस व्यक्ति ने इसे "प्रोग्राम गलती" के रूप में वर्णित किया है। लक्ष्य फ्रेमवर्क होने पर Ctrl + C दबाते समय मैं जो देखता हूं उसका एक स्क्रीनशॉट यहां होता है। वीईटी 2010 में .NET 4 चल रहा है: http://img227.imageshack.us/img227/5871/consoletest.jpg – BigJoe714
बस एक अनुमान है, लेकिन आप शायद होस्टिंग प्रक्रिया को अक्षम करके इस समस्या को हल करने में सक्षम हों: अपनी प्रोजेक्ट पर राइट-क्लिक करें, गुण चुनें, डीबग टैब पर जाएं, और "विजुअल स्टूडियो होस्टिंग प्रक्रिया सक्षम करें" को अनचेक करें। –