Следующий код при запуске в приложении netcoreapp2.0, похоже, не выдает UnobservedTaskException
using System;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApp3 {
class Program {
public static void Main(string[] args) {
TaskScheduler.UnobservedTaskException += (s, e) => {
/// Try to crash the application - we wanna nail unobserved exceptions dead.
/// Unfortunately, this code never seems to run.
Console.WriteLine("UnobservedTaskException thrown.");
throw e.Exception;
};
var t = Task.Run(() => {
throw new NotImplementedException();
});
while (!t.IsFaulted)
Thread.Sleep(1);
t = null;
Console.WriteLine("Task is faulted.");
GC.Collect();
GC.WaitForPendingFinalizers();
Console.ReadKey();
}
}
}
Вот файл проекта.Как получить обработчик UnobservedTaskException
для запуска?
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.2</TargetFramework>
<LangVersion>7.3</LangVersion>
</PropertyGroup>
</Project>
В других статьях stackoverflow я видел совет использовать следующий фрагмент кода в файле проекта, но он работает только для .net framework4.0+ проектов.Если есть эквивалент для файла проекта .netcore, это может быть то, что мне нужно знать.
<runtime>
<ThrowUnobservedTaskExceptions enabled="true"/>
</runtime>