首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >等待所有任务C# MVC

等待所有任务C# MVC
EN

Stack Overflow用户
提问于 2015-11-06 00:40:58
回答 1查看 151关注 0票数 0

我有一组图像要被拒绝或接受,在提交每个视图页面时,它会触发并忘记一个API请求:

代码语言:javascript
运行
复制
@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    <h1>
        @Html.DisplayFor(modelItem => modelItem.Name)
        <button type="submit" class="btn btn-default" name="isValid" value="true">
            <span class="glyphicon glyphicon-ok"></span>
        </button>
        <button type="submit" class="btn btn-default" name="isValid" value="false">
             <span class="glyphicon glyphicon-remove"></span>
        </button>
    </h1>

    ....
}

在控制器中:

代码语言:javascript
运行
复制
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Edit(MultimediaEditView multimediaEditView)
{
    var multimedias = db.Multimedias.Where(x => x.IsValid == null && x.IsActive == true);
    Multimedia multimedia = db.Multimedias.Find(multimediaEditView.ID);
    multimedia.InjectFrom(multimediaEditView);

    if (ModelState.IsValid)
    {
        if (multimedia.IsValid == true)
        {
            if (multimedias.Where(x => x.ProductID == multimedia.ProductID && x.ID != multimedia.ID).Count() != 0)
                multimedia.UploadToExternalApi();
            else
            {
                await multimedia.UploadToExternalApi();
                multimedia.ProcessRelatedFiles();
            }
        }

        db.Entry(multimedia).State = EntityState.Modified;
        db.SaveChanges();

        return RedirectToAction("Index");
    }

    ...
}

在集合的最后一个图像上,我需要检查所有任务是否已完成,然后再发送另一个API请求,该请求将图像分组到我正在尝试的服务器上:

代码语言:javascript
运行
复制
// If not the last image fire and forget
if (multimedias.Where(x => x.ProductID == multimedia.ProductID && x.ID != multimedia.ID).Count() != 0)
    multimedia.UploadToApi();
// else on the last image wait for it to finish then group
else
{
    await multimedia.UploadToApi();
    multimedia.ProcessRelatedFiles();
}

然而,它看起来并不像我想的那样等待所有的任务,而且似乎有很多功能来等待所有的任务如果你知道哪些任务正在运行,当你不知道哪些任务已经被触发时,有没有类似的东西?

EN

回答 1

Stack Overflow用户

发布于 2015-11-06 01:50:31

将所有任务存储在您以后可以访问的位置,例如在列表中。然后,您可以使用标准的await Task.WhenAll。我不明白为什么你需要特别对待最后一个任务。

对于运行中的任务没有内置的跟踪功能,它真的不能存在,因为框架不能知道你作为一个开发人员是如何看待你的任务及其分组的。

我希望您不会试图等待跨HTTP请求的任务。这通常不可能以可靠的方式实现。需要做一些其他的事情,所以这是不必要的。不要在请求之间共享状态。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33550100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档