Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
İşlenmeyen görev özel durumlarının çalışan bir işlemi sonlandırıp sonlandırmayacağını belirtir.
<configuration>
<runtime>
<ThrowUnobservedTaskExceptions>
Sözdizimi
<ThrowUnobservedTaskExceptions
enabled="true|false"/>
Öznitelikler ve Öğeler
Öznitelikler, alt ve üst öğeler aşağıdaki bölümlerde açıklanmaktadır.
Attributes
| Özellik | Description |
|---|---|
enabled |
Gerekli öznitelik. İşlenmeyen görev özel durumlarının çalışan işlemi sonlandırıp sonlandırmayacağını belirtir. |
enabled Özniteliği
| Değer | Description |
|---|---|
false |
İşlenmeyen bir görev özel durumu için çalışan işlemi sonlandırmaz. Bu varsayılan seçenektir. |
true |
İşlenmeyen bir görev özel durumu için çalışan işlemi sonlandırır. |
Alt Öğeler
Yok.
Üst Öğeler
| Öğe | Description |
|---|---|
configuration |
Her yapılandırma dosyasında yer alan ve ortak dil çalışma zamanı ve .NET Framework uygulamaları tarafından kullanılan kök öğe. |
runtime |
Çalışma zamanı başlatma seçenekleri hakkında bilgi içerir. |
Açıklamalar
ile Task ilişkilendirilmiş bir özel durum gözlemlenmediyse, işlem yoktur Wait , üst öğe eklenmez ve Task.Exception özellik okunmamışsa görev özel durumunun gözlemlenmediği kabul edilir.
.NET Framework 4'te, varsayılan olarak, gözlemlenmeyen bir özel durumu olan bir atık toplanırsa Task , sonlandırıcı bir özel durum oluşturur ve işlemi sonlandırır. İşlemin sonlandırılması, çöp toplama ve sonlandırma zamanlamasına göre belirlenir.
Geliştiricilerin görevlere göre zaman uyumsuz kod yazmasını kolaylaştırmak için .NET Framework 4.5, gözlemlenmeyen özel durumlar için bu varsayılan davranışı değiştirir. Gözlemlenmeyen UnobservedTaskException özel durumlar yine de olayın tetiklenmesine neden olur, ancak varsayılan olarak işlem sonlandırılmaz. Bunun yerine, olay işleyicisinin özel durumu gözlemleyip gözlemlemediğine bakılmaksızın olay tetiklendikten sonra özel durum yoksayılır.
.NET Framework 4.5'te, .NET Framework 4'ün özel durum oluşturma davranışını etkinleştirmek için bir uygulama yapılandırma dosyasındaki öğesini kullanabilirsiniz<ThrowUnobservedTaskExceptions>.
Özel durum davranışını aşağıdaki yollardan biriyle de belirtebilirsiniz:
Ortam değişkenini
COMPlus_ThrowUnobservedTaskExceptions(set COMPlus_ThrowUnobservedTaskExceptions=1) ayarlayarak.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework anahtarında ThrowUnobservedTaskExceptions = 1 kayıt defteri DWORD değerini ayarlayarak.
Örnek 1
Aşağıdaki örnekte, bir uygulama yapılandırma dosyası kullanarak görevlerde özel durum oluşturmanın nasıl etkinleştirileceği gösterilmektedir.
<configuration>
<runtime>
<ThrowUnobservedTaskExceptions enabled="true"/>
</runtime>
</configuration>
Örnek 2
Aşağıdaki örnek, bir görevden gözlemlenmeyen bir özel durumun nasıl atıldığını gösterir. Kodun düzgün çalışması için yayımlanmış bir program olarak çalıştırılması gerekir.
using System;
using System.Threading;
using System.Collections.Generic;
using System.Threading.Tasks;
//Use the following config settings to enable the throwing of unobserved exceptions.
// <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
// <ThrowUnobservedTaskExceptions enabled="true"/>
public class Example
{
static void Main()
{
Task.Run(() => { throw new InvalidOperationException("test"); });
while (true)
{
Thread.Sleep(100);
GC.Collect();
GC.WaitForPendingFinalizers();
}
}
}
Imports System.Threading
Imports System.Threading.Tasks
'Use the following config settings to enable the throwing of unobserved exceptions.
' <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
' <ThrowUnobservedTaskExceptions enabled="true"/>
Public Class Example
Shared Sub Main()
Task.Run(Sub() Throw New InvalidOperationException("test"))
Do
Thread.Sleep(100)
GC.Collect()
GC.WaitForPendingFinalizers()
Loop
End Sub
End Class