In C# ich bin eine Anwendung basierend auf Thread erstellen, die eine Textdatei von Computer (eigentlich Remote-Computer) gelesen von Benutzer ausgewählt. Wenn der Benutzer Änderungen an der Originaldatei vornimmt, sollte diese Anwendung die geänderte Datei (ganz) anzeigen.Automatische Dateiaktualisierung in C#?
Erfolgreich ist es aber, Thread, den ich benutze, weiß nicht wie und wo zu platzieren, dass es kontinuierlich liest die ursprüngliche Datei aus dem Hintergrund. Meine Anwendung wird hängt mit diesem Code
public partial class FormFileUpdate : Form
{
// This delegate enables asynchronous calls for setting the text property on a richTextBox control.
delegate void UpdateTextCallback(object text);
// This thread is used to demonstrate both thread-safe and unsafe ways to call a Windows Forms control.
private Thread autoReadThread = null;
public FormFileUpdate()
{
InitializeComponent();
//Creating Thread
this.autoReadThread = new Thread(new ParameterizedThreadStart(UpdateText));
}
private void openToolStripButton_Click(object sender, EventArgs e)
{
OpenFileDialog fileOpen = new OpenFileDialog();
fileOpen.Title = "Select a text document";
fileOpen.Filter = @"Text File|*.txt|Word Document|*.rtf|MS office Documnet|*.doc|See All files|*.*";
fileOpen.FilterIndex = 1;
fileOpen.RestoreDirectory = true;
fileOpen.Multiselect = false;
if (fileOpen.ShowDialog() == DialogResult.OK)
{
//Created Thread will start here
this.autoReadThread.Start(fileOpen.FileName);
}
}
private void UpdateText(object fileName)
{
StreamReader readerStream = null;
while(true)
{
if (this.richTextBox1.InvokeRequired)
{
UpdateTextCallback back = new UpdateTextCallback(UpdateText);
this.Invoke(back, new object[] { fileName });
}
else
{
try
{
string fileToUpdate = (string)fileName;
readerStream = new StreamReader(fileToUpdate);
richTextBox1.Text = readerStream.ReadToEnd();
}
catch (Exception ex) { MessageBox.Show(ex.Message); }
finally
{
if (readerStream != null)
{
readerStream.Close();
Thread.Sleep(100);
}
}
}
}
}
}
also sollte ich eine andere Klasse mit Threads erstellen, die das behandeln? – PawanS