/*А нельзя ли просто объединить эти параметры в одну сущность, например так:
class Prox
{
public string[] Prox1 {get;set;}
public int[] Prox2 {get;set;}
}*/
Если количество строк в массивах равно, попробуйте, например так:
var items = new List<KeyValuePair<string, string>>();
for (int i = 0; i < Prox.Length; i++)
{
items.Add(new KeyValuePair<string, string>(Prox[i], accitem[i]));
}
// с использованием Parallel, если массивы очень огромные
// Parallel.For(0, prox.Length, i => items.Add(new KeyValuePair<string, string>(Prox[i], accitem[i])));
Parallel.ForEach(items, options, p => indieroyale(p.Key, p.Value));
Можно заменить KeyValuePair на свой класс, с двумя полями string, сути это не меняет.
UPD: Да и вообще, зачем Вам Parallel.ForEach? Делайте все через Parallel.For, без всяких объединений:
Parallel.For(0, Prox.Length, options, i => indieroyale(Prox[i], accitem[i]));