スレッドでアプリケーションを作成すると、ユーザーが選択したコンピュータ(実際にはリモートコンピュータ)からテキストファイルが読み込まれます。ユーザーが元のファイルを変更した場合、このアプリケーションは変更されたファイル(全体)を表示する必要があります。C#の自動ファイルアップデータ?
成功していますが、私が使っているスレッドは、どこからどのように配置するのかわからず、バックグラウンドから元のファイルを連続的に読み取っています。私のアプリケーションは、このコード
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);
}
}
}
}
}
}
これを扱うスレッドで別のクラスを作成する必要がありますか? – PawanS