пустой файл блокнота вместо того, который написан в С#

Когда я вызываю эту функцию, она просто открывает несколько пустых окон блокнота, но если я открываю файл text2 после запуска, он показывает мне все введенные строки... Я даже пытался сбросить, чтобы записать все, что находится в буфере, но не помогает.

static void finish()
{
    FileStream fs2 = new FileStream("C:\\Users\\ayush.mishra\\Desktop\\text2.txt", FileMode.Create, FileAccess.Write);
    using(StreamWriter s = new StreamWriter(fs2))
    {
        s.WriteLine("This Notepad will self destruct in....");
        fs2.Flush();
        Process notepadProcess2 = Process.Start("C:\\Users\\ayush.mishra\\Desktop\\text2.txt");
        for (var i = 0; i < 40000000.00; i++);
        notepadProcess2.CloseMainWindow();
        s.WriteLine(" ******  5  ****** ");
        fs2.Flush();
        notepadProcess2 = Process.Start("C:\\Users\\ayush.mishra\\Desktop\\text2.txt");
        for (var i = 0; i < 400000000; i++);
        notepadProcess2.CloseMainWindow();
        s.WriteLine(" ******  4  ****** ");
        fs2.Flush();
        notepadProcess2 = Process.Start("C:\\Users\\ayush.mishra\\Desktop\\text2.txt");
        for (var i = 0; i < 400000000; i++);
        notepadProcess2.CloseMainWindow();
        s.WriteLine(" ******  3  ****** ");
        fs2.Flush();
        notepadProcess2 = Process.Start("C:\\Users\\ayush.mishra\\Desktop\\text2.txt");
        for (var i = 0; i < 400000000; i++);
        notepadProcess2.CloseMainWindow();
        notepadProcess2 = Process.Start("C:\\Users\\ayush.mishra\\Desktop\\text2.txt");
        s.WriteLine(" ******  2  ****** ");
        fs2.Flush();
        for (var i = 0; i < 400000000; i++);
        notepadProcess2.CloseMainWindow();
        notepadProcess2 = Process.Start("C:\\Users\\ayush.mishra\\Desktop\\text2.txt");
        s.WriteLine(" ******  1  ****** ");
        fs2.Flush();
        for (var i = 0; i < 400000000; i++);
        notepadProcess2.CloseMainWindow();
    }
}

Какие-либо предложения?


person Pundit    schedule 26.06.2013    source источник
comment
Файл заблокирован, в таком случае Блокнот, вероятно, просто покажет пустой файл вместо сообщения об ошибке.   -  person Shadow Wizard Wearing Mask V2    schedule 26.06.2013
comment
Вместо повторения цикла вы можете использовать Thread.Sleep() или Timer для целей синхронизации. Даже если увеличение int 400 миллионов раз занимает 1 секунду, через 10 лет на современных ПК с более быстрыми процессорами это произойдет в одно мгновение. Некоторые из самых старых видеоигр стали невероятно быстрыми на современных ПК по тем же причинам.   -  person Nolonar    schedule 26.06.2013
comment
Закройте FileStream вместо его очистки. Или попробуйте вызвать конструктор с параметром FileSharing, но, поскольку вы создание нового файла может быть бесполезным.   -  person Artemix    schedule 26.06.2013
comment
@ShadowWizard я открыл еще один текстовый файл одновременно через поток, который показывает данные, у которых не было проблем с блокировкой ..   -  person Pundit    schedule 26.06.2013
comment
@Artemix, как действительно поможет закрытие файла ... потому что я избегал этого, потому что это кажется слишком громоздким ...   -  person Pundit    schedule 26.06.2013
comment
Блокировка на файл, другой текстовый файл не имеет значения.   -  person Shadow Wizard Wearing Mask V2    schedule 26.06.2013
comment
@Pundit Когда вы закрываете файл, блокировки снимаются, и другие приложения могут видеть содержимое файла. Когда вы просто Flush, блокировки все еще сохраняются, и только текущий процесс может прочитать содержимое файла.   -  person Artemix    schedule 26.06.2013
comment
@Atemix я думаю, что понимаю ... но я закрываю файл блокнота, прежде чем писать в него ... в этом случае проблема все еще будет сохраняться, и если это произойдет, вы можете предложить способ выполнить намерение ...   -  person Pundit    schedule 26.06.2013


Ответы (1)


Проблема здесь в том, что вы сначала открываете файл в блокноте, а затем записываете в него данные. Поскольку файл уже открыт в блокноте, изменения не отображаются. Но если вы снова откроете файл в блокноте, он отобразит записанные в него данные.

person fhnaseer    schedule 26.06.2013
comment
предполагается, что уже открытый файл должен отображать письменную часть перед ним ... поэтому я каждый раз закрываю его, но все равно каждый раз он выглядит пустым ... - person Pundit; 26.06.2013
comment
поэтому блокнот закрывается, когда вы вызываете notepadProcess2.CloseMainWindow ()? - person fhnaseer; 26.06.2013
comment
да. он завершает процесс.. таким образом закрывая файл блокнота.. вы можете запустить этот метод в основном классе, чтобы проверить вывод.. - person Pundit; 26.06.2013
comment
Данные записываются в файл, когда инструкция использования завершена. Вот почему вы снова и снова видите, как файл блокнота открывается без текста. - person fhnaseer; 26.06.2013
comment
это будет потому, что файл открыт в блокноте, или блокнот будет отображать диалоговое окно сохранения. Почему вы не используете метод File.WriteAllLines(string [])? - person fhnaseer; 27.06.2013
comment
ну, цель здесь состоит в том, чтобы показать обратный отсчет, как это происходит ... и если вы запустите его, вы увидите, что файлы блокнота закрываются, прежде чем открыть его снова без проблем ... так что, возможно, проблема не в этом. - person Pundit; 27.06.2013