Как отслеживать текстовый файл и постоянно выводить содержимое в текстовое поле?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как отслеживать текстовый файл и постоянно выводить содержимое в текстовое поле?

Сообщение Anonymous »

Я создаю программу, управляющую игровым сервером. Одна из функций, которые я создаю, — это монитор файла журнала сервера в реальном времени.
Существует файл журнала (простой текстовый файл), который обновляется сервером по мере его запуска.
Как мне постоянно проверять файл журнала и выводить его содержимое в RichTextBox?
Я выполнил эту простую функцию, просто попытавшись получить содержимое журнала. Конечно, он просто получит текст построчно и выведет его в мое текстовое поле. Кроме того, программа будет заблокирована на время выполнения цикла, поэтому я знаю, что это бесполезно.

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

public void ReadLog()
{
using (StreamReader reader = new StreamReader("server.log"))
{
String line;

// Read and display lines from the file until the end of the file is reached.
while ((line = reader.ReadLine()) != null)
{
monitorTextBox.AppendText(line + "\n");
CursorDown();
}
}
}
Но как бы вы решили максимально простое решение проблемы мониторинга в реальном времени?
*** РЕДАКТИРОВАТЬ ***
Я использую решение Prescots. отличная штука.
Сейчас я использую sstreamreader для помещения текста из файла в текстовое поле. Я столкнулся с проблемой: всякий раз, когда я пытался получить доступ к любому из элементов управления графическим интерфейсом в моем обработчике событий, программа просто останавливалась без ошибок или предупреждений.
Я обнаружил, что это необходимо сделать с резьбой. Я решил это так:

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

private void OnChanged(object source, FileSystemEventArgs e)
{
if (monitorTextField.InvokeRequired)
{
monitorTextField.Invoke((MethodInvoker)delegate { OnChanged(source, e); });
}
else
{
StreamReader reader = new StreamReader("file.txt");

monitorTextField.Text = "";
monitorTextField.Text = reader.ReadToEnd();
reader.Close();
CursorDown();
}
}
Теперь моя единственная проблема заключается в том, что файл file.txt используется сервером, поэтому я не могу получить к нему доступ, поскольку он «используется другим процессом». Я не могу контролировать этот процесс, так что, возможно, мне не повезло.
Но файл можно открыть в блокноте во время работы сервера, так что каким-то образом это должно быть возможно. Возможно, я смогу сделать временную копию файла, когда он обновится, и прочитать копию. Я не знаю.

Подробнее здесь: https://stackoverflow.com/questions/975 ... -a-textbox
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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