Я пытаюсь обрабатывать исключения задач без ожидания.
Я пытаюсь использовать ContinueWith с TaskContinuationOptions.NotOnRanToCompletion. Но у меня есть одна главная проблема - в тестовой программе все идет хорошо и работает только код из ContinueWith. Но в моей основной программе Exception по-прежнему переходит к перехвату блоков и к ContinueWith (функция не перестает работать, но я хочу работать с этими исключениями другим способом).
Маленький пример выглядит так
class Program
{
static void Main(string[] args)
{
try
{
Testim();
}
catch (Exception)
{
Console.WriteLine("catch");
}
}
static void method()
{
HttpClient cl=new HttpClient();
cl.PostAsync("http://oru.uri", null);
}
static void Testim()
{
HttpClient cl = new HttpClient();
Task t = cl.PostAsync("http://oru.uri", null);
t.ContinueWith((Task t1) => { Console.WriteLine("success"); }, CancellationToken.None,
TaskContinuationOptions.OnlyOnRanToCompletion, TaskScheduler.Current);
t.ContinueWith((Task t1) => { Console.WriteLine("error"); }, CancellationToken.None,
TaskContinuationOptions.OnlyOnFaulted, TaskScheduler.Current);
Console.ReadKey();
}
}
В тестовом проекте все в порядке, но в моем другом проекте исключения обрабатываются 2 раза - в catch, и в continue, и catch выполняются первыми.