Tôi đang sử dụng Thư viện song song nhiệm vụ để chạy một tác vụ - khi bị hủy - ném OperationCanceledException, sau đó bị bắt khi sử dụng AggregateException, như sau. AggregateException chứa một danh sách các TaskCanceledExceptions, tương ứng với các ngoại lệ được ném. Thật không may, các TaskCanceledExceptions này dường như đang mất các dấu vết ngăn xếp được ném bởi các ngoại lệ ban đầu. Đây có phải là do thiết kế không?TaskCanceledException trong AggregateException không chứa dấu vết ngăn xếp
try
{
task1.Wait();
}
catch (AggregateException aggEx)
{
var tcex = ex as TaskCanceledException;
if (tcex != null)
{
Debug.WriteLine("InnerException:{0}, Message:{1}, Source:{2}, StackTrace: {3}",
tcex.InnerException, tcex.Message, tcex.Source, tcex.StackTrace);
return true;
}
else
{
return false;
}
}
Kết quả:
InnerException:, Message:A task was canceled., Source:, StackTrace:
Vui lòng cập nhật mã của bạn để phản ánh kết quả bạn đã đăng! :) –
Dòng "if (tcex! = Null)" có chính xác không? Có vẻ như nó phải là "if (tcex == null)" –
@MatthewWatson - 'if' này lọc ra các ngoại lệ khác. –