在 C# (.NET) 中,我有 2 个循环 ->
A for ... do:
{
B for do:
{ something}
something that evaluates all "for"s in B loop
}
我将 Parallel.For 用于内部循环,但每次运行应用程序时,这些循环的结果都会有所不同。我认为这可能是一些异步工作的结果,但我不确定如何在 VS 2005 Express 中确定它,而且我不确定我是否应该做类似“等到 Parallel.For 完成,然后做所有的事情。
编辑(由于评论需要一些更具体的信息):
for (int i = 0; i < max; i++) //Pre Vsetky retazce ..
{
prefix = 0;
tempsame.Clear();
bool spracovane = true;
int dlzkaI = Items[i, 1].Length;
if (Items[i, 2] != "1") { spracovane = false; }
if (spracovane == false)
// Parallel.For(0, max, delegate(int j)
// {
for (int j = 0; j < max; j++) //Pre kazdy dalsi
{
int dlzkaJ = Items[j, 1].Length;
if (dlzkaJ >= dlzkaI)
{
CompareInfo myComp = CultureInfo.InvariantCulture.CompareInfo;
bool isprefix = myComp.IsPrefix(Items[j, 1], Items[i, 1]);
bool issame = false;
if (dlzkaJ.Equals(dlzkaI)) issame = true;
if (isprefix == true && issame == false)
{
prefix++;
}
else if (isprefix == true && issame == true && prefix == 0)
{
tempsame.Add(Items[j, 0]);
}
}
}
if ((prefix==0) && (spracovane==false))
{
Items = UpdateUnique(tempsame.ToArray(typeof(string)) as string[], Items);
unique++;
}
}
简而言之,这两个循环遍历相同的字符串数组并仅选择唯一的字符串-> 这意味着该字符串不能是任何其他字符串的前缀。
> Car - unique Car - unique Cafeteria -
> unique Automobile - unique Auto - not
> unique - it's prefix of Automobile
> Auto - not unique