我正尝试在不等待的情况下处理任务异常。 我正在尝试将ContinueWith与TaskContinuationOptions.NotOnRanToCompletion一起使用。但是我有一个主要问题-在测试程序中,一切都进行得很好,并且只能使用ContinueWith中的代码。但是在我的主程序中,Exception仍然会变为catch块和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();
}
}
在测试项目中一切正常,但在我的其他项目中,exept可以处理2次-在catch中并继续执行,然后catch首先执行。
答案 0 :(得分:0)
我的代码(不是本示例)的问题是我的Wait()任务。 但是当我在Wait()之前收到异常时,Wait会生成异常