C# 有没有办法找出谁取消了任务?

C# 有没有办法找出谁取消了任务?,c#,.net,task,task-parallel-library,C#,.net,Task,Task Parallel Library,我知道这听起来很奇怪,但我正在尝试对我们的API进行简单的性能测试,有些东西会取消请求,导致应用程序出错和响应失败 我能看看是谁取消的吗 2018-03-12 14:37:10.656+00:00(BettingAPI)(BettingAPI)[错误]执行获取程序时引发异常,sessionInfo-“siteId:1,customerId:2231,sessionId:1d01941a-829e-4ca9-ae69-45205b1f481c” System.Threading.Tasks.Tas

我知道这听起来很奇怪,但我正在尝试对我们的API进行简单的性能测试,有些东西会取消请求,导致应用程序出错和响应失败

我能看看是谁取消的吗

2018-03-12 14:37:10.656+00:00(BettingAPI)(BettingAPI)[错误]执行获取程序时引发异常,sessionInfo-“siteId:1,customerId:2231,sessionId:1d01941a-829e-4ca9-ae69-45205b1f481c” System.Threading.Tasks.TaskCanceledException:任务已取消。 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中 在System.Net.Http.HttpClient.d_u58.MoveNext()上 ---来自引发异常的上一个位置的堆栈结束跟踪--- 在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中 在SBTech.Microservices.Client.Channels.HttpMicroserviceChannel.d_u92.MoveNext()中 ---来自引发异常的上一个位置的堆栈结束跟踪--- 在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中 在SBTech.Microservices.Client.Common.Clients.MicroserviceThickClient.c_udisplayClass7_02.d.MoveNext()中

---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()位于 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 SBTech.BettingApi.Services.DataFetchManager.DataFetchManager.d_u9.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()位于 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 SBTech.BettingAPI.Services.Flow.BetSlipAPIFlow.d_u8.MoveNext()


我的意思是,我可以通过fornonsuccess在运行时
中看到调用,但我是否可以意识到是什么导致了调用?

在代码中添加适当的异常处理。如果调用的API引发异常、超时或调用中止,则可以取消任务。如果错误地使用了
async void
,则当垃圾收集器运行清理任务时,任务将被取消。例如,在控制台应用程序中,除非您在退出前等待,否则进程将终止,取消所有任务并对其进行GC。如果您需要特定帮助,请发布导致此错误的代码。它看起来像是在BetSlipAPIFlow启动的调用以某种方式导致了废弃的HttpClient调用。您可以添加到日志代码或
catch
子句来清理异步执行的调用堆栈。好的,我会看看我能做些什么,感谢您的建议,如果我能够更多地过滤问题,我还会添加一些代码。