我正在努力提高程序的执行速度。我使用该任务使其同时运行。以下是我的原始代码:
StringBuilder expression = new StringBuilder(1024);
int count = table.Rows.Count;
for (int i = 0; i < count; i++)
{
string result = GetResult(companyID);
expression.Append(result);
}
我改变了这样的事情:
StringBuilder expression = new StringBuilder(1024);
int count = table.Rows.Count;
for (int i = 0; i < count; i++)
{
try
{
Task task1 = Task.Factory.StartNew(() =>
{
string result = GetResult(companyID);
expression.Append(result);
});
}
catch (Exception ex) {
}
}
然而,结果却不尽相同。如何使用任务使结果相同?
答案 0 :(得分:0)
简化您的情况:
List<string> Outputs = new List<string>();
for(int i=0; i< 100; i++)
{
Outputs.Add($"Hello World: {i}");
}
这里,Output是一个包含Hello World的字符串列表:1,2,....:
你的并行化方式 - 不能保证相同的顺序(因为那是什么并行化,你不能说哪个任务首先完成)。
如果您期望输出与顺序逻辑相同,但想并行执行,则可以执行以下操作:
Parallel.For(0, 100, (i) =>
{
Outputs.Insert(i, $"Hello World: {i}");
});
注意,循环体中的代码 - 在预期的索引处插入字符串。这将创建预期的输出。