取消任务内部的异步任务

时间:2017-09-23 10:56:25

标签: c# asp.net-mvc async-await

这可能是主要功能

    static void Main(string[] args)
    {   
        foreach(var user in sommodel)
        {
             AsyncContext.Run(() => sf.StartFollowState(5));
        }
    }

这是任务

public class StartFollow
{
    public async Task StartFollowState(long iuid)
    {
        foreach(var user in sommodel)
        {
             if(somthing)
             {
                  //cancel a task
             }
              //do some
        }
        foreach(var user in sommodel)
        {
              //do some
        }
    }
}

你可以在任务中看到我想要停止或取消该foreach中的任务 我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

不幸的是,人们不会简单地取消任务。你可以做的是从方法中“返回”,以便任务进入必杀技,然后等待垃圾收集器完成工作。

public class StartFollow
{
    public async Task StartFollowState(long iuid)
    {
        foreach(var user in sommodel)
        {
             if(somthing)
             {
                  //cancel a task
                  return;    
             }

             //do some
        }

        foreach(var user in sommodel)
        {
              //do some
        }
    }
}