在 C# 应用程序中完成任务

Finish a task in c# application

我是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);
            } 
        }

我需要知道如何停止任务的执行并在处理完成后杀死它的线程。

您可以为此使用 CancellationToken,然后在您的任务代码中定期检查它。参见例如:

但看起来您的代码并不是特别适合于此。要取消任务,应该可以将其分成不同的步骤,但这里不是这种情况。

如果你更想中止任务(可能是因为数据库连接问题),那么你应该简单地给任务一个适当的超时,或者 - 甚至更简单 - return 一旦遇到错误。

编辑:还是我误会了你,你想在任务执行后中止任务?为此,您需要发明一台时间机器 - 如果您成功了,请告诉我 ;-)...

Task 已经完成后无法停止执行,因为根据定义,它已经停止执行。

Task.Run 将 return 线程池线程返回线程池(如果使用了池),或者如果使用了新线程,则允许分配的线程完成并自行关闭。

您无需明确执行任何操作。