微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从List.ForEach C#进行异步调用

我有项目列表和我想要调用UploadChunkToServer方法的每个项目,但是并行.列表中始终只有4个项目.

if (DataQueue.Count == NumberofChunksToRead)
{
    DataQueue.ToList().ForEach(Chunk =>
    {
        UploadChunkToServer(Chunk);
    });
}

以上是我在方法中的代码调用,方法签名如下.

private void UploadChunkToServer(UserCustomFile Chunk)
{
    var client = new RestClient(Helper.GetServerURL());

    var request = new RestRequest("api/fileupload/savechunk",Method.POST);
    request.AddHeader("Content-type","application/json");
    request.RequestFormat = RestSharp.DataFormat.Json;
    request.AddJsonBody(Chunk);

    client.ExecuteAsync(request,response =>
    {
        if (response.StatusCode != System.Net.HttpStatusCode.OK)
        {
            throw new Exception(response.ErrorMessage);
        }
        else
        {
            ChunkStatuses.Add(Chunk.ChunkID);
        }
    });
}

我试图添加异步运算符,但没有运气.有什么想法可以实现吗?

解决方法

也许你可以具体使用 Parallel和ForEach:

Parallel.ForEach(DataQueue.ToList(),Chunk =>
                 {
                      UploadChunkToServer(Chunk);
                 });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐