<ThrowUnobservedTaskExceptions> elem
Megadja, hogy a nem kezelt tevékenységkivételeknek le kell-e zárniuk egy futó folyamatot.
<Konfigurációs>
<Runtime>
<ThrowUnobservedTaskExceptions>
Syntax
<ThrowUnobservedTaskExceptions
enabled="true|false"/>
Attribútumok és elemek
Az alábbi szakaszok az attribútumokat, a gyermekelemeket és a szülőelemeket ismertetik.
Attribútumok
Attribútum | Leírás |
---|---|
enabled |
Kötelező attribútum. Megadja, hogy a nem kezelt tevékenységkivételeket le kell-e zárni a futó folyamatról. |
enabled attribute
Érték | Leírás |
---|---|
false |
Nem szünteti meg a nem kezelt feladatkivétel futó folyamatát. Ez az alapértelmezett beállítás. |
true |
Leállítja a nem kezelt feladatkivétel futó folyamatát. |
Gyermekelemek
Nincsenek.
Szülőelemek
Elem | Leírás |
---|---|
configuration |
A közös nyelvi futtatókörnyezet és .NET-keretrendszer alkalmazások által használt összes konfigurációs fájl gyökéreleme. |
runtime |
Információkat tartalmaz a futtatókörnyezet inicializálási lehetőségeiről. |
Megjegyzések
Ha nem figyelték meg az a-hez Task társított kivételt, nincs Wait művelet, a szülő nincs csatolva, és a Task.Exception tulajdonság nem lett elolvasva, a feladatkivételt a rendszer nem figyeltnek tekinti.
A .NET-keretrendszer 4-ben alapértelmezés szerint, ha egy Task nem észlelt kivétellel rendelkező szemétgyűjtés történik, a véglegesítő kivételt ad, és leállítja a folyamatot. A folyamat befejezését a szemétgyűjtés és a véglegesítés időzítése határozza meg.
Annak érdekében, hogy a fejlesztők egyszerűbben írjanak aszinkron kódot a feladatok alapján, a .NET-keretrendszer 4.5 megváltoztatja ezt az alapértelmezett viselkedést a nem engedélyezett kivételek esetében. A nem engedélyezett kivételek továbbra is az UnobservedTaskException eseményt okozzák, de alapértelmezés szerint a folyamat nem fejeződik be. Ehelyett a rendszer figyelmen kívül hagyja a kivételt az esemény létrehozása után, függetlenül attól, hogy egy eseménykezelő megfigyeli-e a kivételt.
A .NET-keretrendszer 4.5-ben az alkalmazáskonfigurációs fájl ThrowUnobservedTaskExceptions> elemével engedélyezheti a kivétel .NET-keretrendszer 4 viselkedését.<
A kivétel viselkedését az alábbi módok egyikével is megadhatja:
A környezeti változó
COMPlus_ThrowUnobservedTaskExceptions
(set COMPlus_ThrowUnobservedTaskExceptions=1
) beállításával.A throwUnobservedTaskExceptions = 1 beállításjegyzékbeli DWORD érték beállításával a HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework kulcsban.
1\. példa
Az alábbi példa bemutatja, hogyan engedélyezheti a kivételek kivetését a feladatokban egy alkalmazáskonfigurációs fájl használatával.
<configuration>
<runtime>
<ThrowUnobservedTaskExceptions enabled="true"/>
</runtime>
</configuration>
2\. példa
Az alábbi példa bemutatja, hogyan történik egy nem megfigyelt kivétel kiesése egy tevékenységből. A kódnak kiadott programként kell futnia, hogy megfelelően működjön.
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
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: