Я пытаюсь использовать Parallel.For
для запуска процесса и получения вывода параллельно.Process StandardOutput ReadToEnd получает пустую/пустую строку при нескольких процессах
Пример кода, как это:
internal class Program
{
private static void Main(string[] args)
{
var bag = new ConcurrentBag<string>();
Parallel.For(0, int.MaxValue, i =>
{
bag.Add(MyMethod());
});
}
public static string MyMethod()
{
using (var a = new Process())
{
a.StartInfo.FileName = "A.exe";
a.StartInfo.RedirectStandardError = true;
a.StartInfo.RedirectStandardInput = true;
a.StartInfo.RedirectStandardOutput = true;
a.StartInfo.CreateNoWindow = true;
a.StartInfo.UseShellExecute = false;
a.StartInfo.ErrorDialog = false;
a.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
a.Start();
string output = a.StandardOutput.ReadToEnd();
a.WaitForExit();
return output; // sometime output will be null
}
}
}
A.exe код
internal class Program
{
private static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 40; j++)
{
Console.Write("A");
}
Console.Write(Environment.NewLine);
}
}
}
Кто-нибудь знает, почему выход обнулить и как можно избежать получить нулевой результат?
Пробовал ли поток 'a.SystemError'? – VMAtm