द्वारा पकड़ा नहीं जा सकता है यह वास्तव में दिलचस्प है कि निम्न C# कोड .NET4.0 पर क्रैश हो जाएगा लेकिन .NET2.0 पर ठीक काम करेगा।क्यों AccessViolationException को .NET4.0
सी # कोड
class Program
{
static void Main(string[] args)
{
try
{
ExceptionTest();
Console.WriteLine("Done!");
}
catch (Exception e)
{
Console.WriteLine("Error !!!");
Console.WriteLine(e.Message);
}
}
[DllImport("badapp")]
private static extern int ExceptionTest();
}
सी ++ कोड
extern "C" __declspec(dllexport) int ExceptionTest()
{
IUnknown* pUnk = NULL;
pUnk->AddRef();
return 0;
}
.NET2.0 के खिलाफ ऊपर सी # कोड संकलन, सब कुछ ठीक काम करता है तो। केवल .NET4.0 के खिलाफ इसे संकलित करने से यह रनटाइम पर क्रैश हो जाएगा।
मुझे संदेह है कि .NET4.0 के बाद सिस्टम अपवाद पकड़ तंत्र बदल दिया गया है। कोई विचार?
ग्रेट उत्तर। बहुत बहुत धन्यवाद!!!! इस सवाल ने मुझे लंबे समय तक भ्रमित कर दिया। –
मैं एक सप्ताह के लिए इस मुद्दे का पीछा कर रहा था! एक चीज जो मैं अपने दूषित राज्य के साथ उपयोगी रूप से कर सकता हूं पुनरारंभ होता है। यह एक कंसोल ऐप है जिसे * दिन में 24 घंटे चलाना चाहिए। अब यह होगा। – Andiih
@Andiih जब तक दूषित बिट्स कोड नहीं है जो इसे पुनरारंभ करेगा। मैं इस उद्देश्य के लिए बाहरी निगरानी का उपयोग करूंगा। –