Обновите тестовый файл, например консольное приложение. Но как? - PullRequest
0 голосов
/ 29 января 2010

мне нужна твоя помощь! если мои коды запускаются, консоль появляется и пишут datetime.now построчно, но если я открываю свой txt (TextFile1.txt). я не вижу результатов консольной команды.

консольный результат в черном блокноте

  • 22:30 29.01.2010
  • 22:31 29.01.2010
  • 22:32 29.01.2010
  • 22:33 29.01.2010

НО; с другой стороны; если я открою textfile (Textfile1.txt), я увижу только один результат за раз, я хочу увидеть результат за все время, как указано выше.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;
using System.IO;

namespace TimerApp4
{
    class Program
    {

        static void Main(string[] args)
        {
              Timer t = new Timer(1000);
                t.Elapsed += new ElapsedEventHandler(SaniyelikIs);
                t.Start();
                Console.Read();
                t.Stop();
        }

        static void SaniyelikIs(object o, ElapsedEventArgs a)
        {
            // write a line of text to the file
            StreamWriter tw = new StreamWriter("TextFile1.txt");
            tw.WriteLine(DateTime.Now);
            Console.WriteLine(DateTime.Now + "\n");
            // close the stream
            tw.Close();

        }
    }
}

Ответы [ 3 ]

1 голос
/ 29 января 2010

Не закрывайте StreamWriter до выхода из программы. Кроме того, поскольку вам необходим доступ к TextWriter из события Timer, вам необходимо использовать открытую или закрытую переменную.

private static TextWriter tw { get; set; }

static void Main(string[] args)
{
    using (tw = new StreamWriter("TextFile1.txt"))
    {
        Timer t = new Timer(1000);
        t.Elapsed += new ElapsedEventHandler(OnTimedEvent);
        t.Start();
        Console.Read();
        t.Stop();
        tw.Close();
    }

static void OnTimedEvent(object sender, ElapsedEventArgs args)
{
    // write a line of text to the file
    tw.WriteLine(DateTime.Now.ToString());
}
0 голосов
/ 29 января 2010

Если я не ошибаюсь, вы хотите видеть файл в реальном времени и выводить последние изменения в консоль для этого файла, да? Если это так, то, может быть, вам стоит использовать класс FileSystemWatcher , чтобы сделать это для вас?

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

0 голосов
/ 29 января 2010

Я не уверен, что понимаю ваш вопрос или проблему. Однако в своем коде вы закрываете поток в методе SaniyelikIs. Так как этот метод будет вызываться каждую секунду, во второй раз, когда вы вызываете его, поток уже будет закрыт, и WriteLine выдаст исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...