System.AppDomain.UnhandledException olayı

Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.

Olay, UnhandledException yakalanmayan özel durumların bildirimini sağlar. Sistem varsayılan işleyicisi özel durumu kullanıcıya bildirmeden ve uygulamayı sonlandırmadan önce uygulamanın özel durum hakkındaki bilgileri günlüğe kaydetmesine olanak tanır. Uygulamanın durumu hakkında yeterli bilgi varsa, daha sonra kurtarma için program verilerini kaydetme gibi başka eylemler de yapılabilir. Özel durumlar işlenmediğinde program verileri bozulabileceğinden dikkatli olunması tavsiye edilir.

Bu olay herhangi bir uygulama etki alanında işlenebilir. Ancak, olayın özel durumun oluştuğu uygulama etki alanında tetiklenmiş olması şart değildir. Özel durum, yalnızca iş parçacığı yığınının tamamı geçerli bir özel durum işleyicisi bulunmaksızın kaldırılmışsa işlenmez, bu nedenle olayın oluşturulabileceği ilk yer iş parçacığının kaynaklandığı uygulama etki alanındadır.

UnhandledException Olay varsayılan uygulama etki alanında işlenirse, iş parçacığı hangi uygulama etki alanında başlatılırsa başlasın, herhangi bir iş parçacığında işlenmeyen özel durumlar için burada oluşturulur. İş parçacığı için UnhandledExceptionolay işleyicisi olan bir uygulama etki alanında başlatıldıysa, olay bu uygulama etki alanında oluşturulur. Bu uygulama etki alanı varsayılan uygulama etki alanı değilse ve varsayılan uygulama etki alanında da bir olay işleyicisi varsa, olay her iki uygulama etki alanında da oluşturulur.

Örneğin, bir iş parçacığının "AD1" uygulama etki alanında başladığını, "AD2" uygulama etki alanındaki bir yöntemi çağırdığı ve burada bir özel durum oluşturan "AD3" uygulama etki alanındaki bir yöntemi çağırdığı varsayılarak. Olayın oluşturulabileceği ilk uygulama etki alanı UnhandledException "AD1"dir. Bu uygulama etki alanı varsayılan uygulama etki alanı değilse, olay varsayılan uygulama etki alanında da oluşturulabilir.

Not

Ortak dil çalışma zamanı, olay için UnhandledException olay işleyicileri yürütülürken iş parçacığı durdurmalarını askıya alır.

Olay işleyicisinin uygun bayraklara sahip bir ReliabilityContractAttribute özniteliği varsa, olay işleyicisi kısıtlanmış yürütme bölgesi olarak kabul edilir.

.NET Framework 4'den başlayarak, olay işleyicisi güvenlik açısından kritik olmadığı ve özniteliğine sahip HandleProcessCorruptedStateExceptionsAttribute olmadığı sürece, bu olay yığın taşması veya erişim ihlalleri gibi işlemin durumunu bozan özel durumlar için tetiklenmez.

Bu olay için bir olay işleyicisi kaydetmek için gerekli izinlere sahip olmanız gerekir veya bir SecurityException oluşturulur.

Olayları işleme hakkında daha fazla bilgi için bkz . Olayları İşleme ve Oluşturma.

İşlenmeyen özel durumlar için diğer olaylar

Belirli uygulama modellerinde, işlenmeyen UnhandledException özel durum ana uygulama iş parçacığında oluşursa, olay diğer olaylar tarafından önlenebilir.

Windows Forms kullanan uygulamalarda, ana uygulama iş parçacığındaki işlenmeyen özel durumlar olayın tetiklenmeye neden olur Application.ThreadException . Bu olay işlenirse, varsayılan davranış işlenmeyen özel durumun uygulamayı sonlandırmamasıdır, ancak uygulama bilinmeyen bir durumda bırakılır. Bu durumda, UnhandledException olay tetiklenmez. Bu davranış, uygulama yapılandırma dosyası kullanılarak veya olay işleyicisi bağlanmadan önce ThreadException modu olarak değiştirmek için UnhandledExceptionMode.ThrowException yöntemi kullanılarak Application.SetUnhandledExceptionMode değiştirilebilir. Bu yalnızca ana uygulama iş parçacığı için geçerlidir. Olay UnhandledException , diğer iş parçacıklarında oluşan işlenmeyen özel durumlar için oluşturulur.

Visual Basic uygulama çerçevesi, ana uygulama iş parçacığındaki WindowsFormsApplicationBase.UnhandledException işlenmeyen özel durumlar için başka bir olay (olay) sağlar. Bu olay, tarafından AppDomain.UnhandledExceptionkullanılan olay bağımsız değişkenleri nesnesiyle aynı ada sahip ancak farklı özelliklere sahip bir olay bağımsız değişkenleri nesnesine sahiptir. Özellikle, bu olay bağımsız değişkenleri nesnesi, işlenmeyen özel durumu yoksayarak (ve uygulamayı bilinmeyen bir ExitApplication durumda bırakarak) uygulamanın çalışmaya devam etmesini sağlayan bir özelliğe sahiptir. Bu durumda, AppDomain.UnhandledException olay tetiklenmez.