在async await 的异步应用中,如果有这样一个应用环境, taskA调用第三方的应用方法(LongRunningOperation),但该异步第三方的异步方法并未提供CancellationTokenSource 传参(当前我无法要求他增加CancellationTokenSource 传参),而我想终止等待,我使用了一个代理 TaskCompletionSource ,并使用await Task.WhenAny(taskA, taskCompletionSource.Task); 通过手动操作TaskCompletionSource.task 的状态也的确做到了提前终止当前的等待,但是,问题是,我仅仅终止了等待,但是task(LongRunningOperation)其实还在运行,仍然在消耗我的内存,我的希望是终止等待,也终止掉taskA对于系统的消耗 ,我目前能想到的是 abort,但这又是不推荐的,请大神指点如何该场景如何去处理,或是在异步中,我如何去彻底的kill掉taskA,
你要明白为会么不推荐abort,因为我们不确定要跑的东西中间状态会对我们的系统产生什么样的影响。
如果确定绝无影响,当然可以kill