Ссылка на строку не ссылается на экземпляр String

616
15 июня 2018, 03:50

Есть код:

internal static void Run(string task, RichTextBox output)
{
        string path = Path.GetFullPath("Project");
        Console.WriteLine($"/c cd \"{path}\" & jppm {task}");
        Process p = new Process();
        p.StartInfo.FileName = "cmd.exe";
        p.StartInfo.Arguments = $"/c cd \"{path}\" & jppm {task}";
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.RedirectStandardOutput = true;
        p.Start();
        string line = null;
        while((line = p.StandardOutput.ReadLine()) != null)
        {
            byte[] bytes = Encoding.Default.GetBytes(p.StandardOutput.ReadLine());
            string result = Encoding.GetEncoding("cp866").GetString(bytes);
            output.Document.Blocks.Add(new Paragraph(new Run(result)));
        }
 }


Строка: Console.WriteLine($"/c cd \"{path}\" & jppm {task}"); выводит:

/c cd "C:\Users\deadmoz5er\source\repos\IDE\IDE\bin\Debug\Project" & jppm app:run

Если эту команду я выполню в CMD в ручную, то все ок, но Visual Studio кидает ошибку:

Вызвано исключение: "System.ArgumentNullException" в mscorlib.dll Необработанное исключение типа "System.ArgumentNullException" в mscorlib.dll Ссылка на строку не ссылается на экземпляр String.

Ошибка в строке: byte[] bytes = Encoding.Default.GetBytes(p.StandardOutput.ReadLine());

Как решить?

Answer 1
byte[] bytes = Encoding.Default.GetBytes(line);
Answer 2

[РЕШЕНО]

Код:

internal static void Run(string task, RichTextBox output)
{
        string path = Path.GetFullPath("Project");
        Console.WriteLine("/c cd \"{path}\" & jppm {task}");
        Process p = new Process();
        p.StartInfo.FileName = "cmd.exe";
        p.StartInfo.Arguments = $"/c cd \"{path}\" & jppm {task}";
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.RedirectStandardOutput = true;
        p.Start();
        string line = "";
        while((line = p.StandardOutput.ReadLine()) != null)
        {
            byte[] bytes = Encoding.Default.GetBytes(line);
            string result = Encoding.GetEncoding("cp866").GetString(bytes);
            output.Document.Blocks.Add(new Paragraph(new Run(result)));
        }
}
READ ALSO
API VK C# требуется имя метод

API VK C# требуется имя метод

ошибка Требуется имя метода

343
Копирование строк из dataGridView1 в dataGridView2

Копирование строк из dataGridView1 в dataGridView2

На форме есть dataGridView1 и dataGridView2При запуске формы dataGridView1 заполняется тремя столбцами из файла mdb

284
C# вк код подтверждения

C# вк код подтверждения

После ввода паролья и логина приходит сообщение с Код подтверждения входа от администрации вк а как сделать поля для в вода этого кода ?

267
Как быстро загрузить список сообщений с почтового сервера?

Как быстро загрузить список сообщений с почтового сервера?

Занимаюсь разработкой почтового клиента под ОС Андроид с помощью C# и Xamarin FormsРабота с сервером и протокол реализован, однако при создании...

264