我是初学者在C#中使用任务,我有这个方法:
public async void GetAnimateur(Action<List<fsign_fiche_signaletique>, Exception> callback)
{
try
{
Task<List<fsign_fiche_signaletique>> data = (Task<List<fsign_fiche_signaletique>>)Task.Run(
() =>
{
DataEntities _db = new DataEntities();
_db.Configuration.LazyLoadingEnabled = false;
var dpcs = _db.fsign_fiche_signaletique.ToList();
return new List<fsign_fiche_signaletique>(dpcs);
});
var result = await data;
callback(result, null);
}
catch (Exception ex)
{
callback(null, ex);
}
}
我需要知道如何在处理完成后停止执行任务并终止其线程。
答案 0 :(得分:2)
在Task
完成之后无法停止执行,因为根据定义,它已经停止执行。
Task.Run
会将线程池线程返回给线程池,或者如果使用了新线程,则允许分配的线程完成并自行拆除。
没有任何事情可以明确地做。
答案 1 :(得分:1)
您可以使用CancellationToken,然后在任务代码中定期检查。参见例如:
但看起来您的代码并不是特别适合这种情况。要取消任务,应该可以将其分成不同的步骤,但这不是这种情况。
如果您更多地考虑中止任务(可能是因为数据库连接问题),那么您应该只是给任务一个适当的超时,或者 - 甚至更简单 - 一旦遇到错误就从它返回。
编辑:或者我弄错了你想要在执行后中止任务?为此,你需要发明一台时间机器 - 如果你成功了,请告诉我; - )......