StreamReader файлового потока имеет значение null сразу после создания экземпляра.C#

Место общения программистов C#
Ответить
Anonymous
 StreamReader файлового потока имеет значение null сразу после создания экземпляра.

Сообщение Anonymous »

Приложение C# для Windows 11, разработанное в VS 2022, считывает текстовый файл с помощью StreamReader. Имя файла, включая путь, — «filepath». Код включающего метода выглядит следующим образом:

Код: Выделить всё

private List GetContours(int i, string filepath, out int
[,] segnum)
{
if (!File.Exists(filepath))
{
MessageBox.Show("No results for the requested contours were
returned.", "No Contours", MessageBoxButtons.OK,
MessageBoxIcon.Information);
segnum = new int[0, 0];
return null;
}
else
{
do
{
try
{
using (FileStream fs = File.OpenRead(filepath))
{
fs.Close();
break;
}
}
catch
{
string msg = "The file " + plotParms[id] + ".txt is
open. Close the file and click OK to proceed.";
MessageBox.Show(msg, "Open File",
MessageBoxButtons.OK, MessageBoxIcon.None);
break;
}
} while (true);
}

using (StreamReader sr = new StreamReader(filepath))
{
string line;
string[] column;
double depDate, arrDate;
bool segIsZero = false;
PointF point = new PointF(0F, 0F);
List segment = new List();
List segments = new List();
lstParmVals[i] = new List();
line = sr.ReadLine();    // Error occurs here
...
}
}
Эта ошибка только начала возникать, но раньше не возникала. Проверка параметров BaseStream показывает правильное имя и длину файла. Он также показывает, что параметры ReadTimeout и WriteTimeout вызывают исключения, но это связано с тем, что эти параметры не поддерживаются для файловых потоков. Может ли кто-нибудь объяснить, что вызывает это и, что более важно, как это можно исправить.
Я прочитал много сообщений о проблеме, которые появлялись в поиске Google. Кроме того, я перезагрузил компьютер и перезапустил VS и приложение без запуска других приложений, запускаемых пользователем. Результат был тот же. Компьютер новый, имеет очень быстрый процессор и 48 ГБ памяти.
Это сообщение об ошибке:
а это трассировка стека:

Подробнее здесь: https://stackoverflow.com/questions/791 ... tantiation
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»