热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

多线程Api调用

我有一个数据表(25k行x50列)。我需要为每个单元使用一个API,并使用API​​的

我有一个数据表(25k行x 50列)。我需要为每个单元使用一个API,并使用API​​的返回值修改该单元的值。在一个线程中执行此操作花费的时间太长,因此我在考虑使用更多线程。
我无法成功完成此操作。我尝试了并行。 Foreach不起作用,因为我在里面等着。

这是我最后的尝试。

var columns = a.Columns.Count;
List tasks = new List();
foreach (DataRow row in a.Rows)
{
tasks.Add(Task.Run(() => DoLotsofWorkAsync(row,columns)));
}
await Task.WhenAll(tasks);

方法:

public async Task DoLotsofWorkAsync(DataRow row,int colCount)
{
var columns = colCount;
int i = 0;
string ab = "";
while (i {
if (row[i].ToString() != "")
{
row.BeginEdit();
try
{
string currentString = row[i].ToString();
Maybe failedResults;
var fromLanguageExtension = await _languageDetector.DetectLanguage(currentString);
var results = await GetMeansFromCache(currentString,fromLanguageExtension);
var findedMeans = await _resultOrganizer.OrganizeResult(results,currentString,out failedResults)
.ConfigureAwait(false);
if (!string.IsnullOrEmpty(findedMeans.DefaultIfEmpty(string.Empty).First()))
{
ab = findedMeans.DefaultIfEmpty(string.Empty).First().ToString();
}
row[i] = ab;
//await Notify(currentString,findedMeans);
}
catch (Exception ex)
{
await Notify("Error",new Maybe(ex.Message));
}
row.EndEdit();
}
i++;
}
}

我不确定自己在做什么错。有人可以指出我正确的方向吗?
谢谢!





推荐阅读
author-avatar
手机用户2602879695
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有