Dosyadaki satırları ve her satırın metin kutusunda olduğunu okurum. Etkinlik kullanıyorum ancak uygulama durdur ve tüm satırları yüklemeyi bekle. Tüm çizgiyi gösterdikten sonra. İşte kod: genel kısmi sınıf Ana Pencere: Pencere { FileReader reader = new FileReader(); public MainWindow() { InitializeComponent(); reader.OnReadLine + = Mesaj; Tavsiye için }WPF olaylarla çoklu yayın
private void Message(object sender, LineEventArgs e)
{
Dispatcher.Invoke((Action)(() =>
{
textBox.Text += e.Content + "\n";
textBox.Focus();
textBox.SelectionStart = textBox.Text.Length;
}));
}
private void button_Click(object sender, RoutedEventArgs e)
{
TaskFactory taskFactory = new TaskFactory();
var x = taskFactory.StartNew(() => reader.Read());
Task.WaitAll(x);
}
}
class LineEventArgs : EventArgs
{
public string Content { get; }
public LineEventArgs(string content)
{
Content = content;
}
}
delegate void OnReadLineHandler(object sender, LineEventArgs e);
class FileReader
{
public event OnReadLineHandler OnReadLine;
public void Read()
{
var fileStream = new FileStream("text.txt", FileMode.Open, FileAccess.Read);
using (var streamReader = new StreamReader(fileStream, Encoding.UTF8))
{
while (!streamReader.EndOfStream)
{
OnRead(streamReader.ReadLine());
}
}
}
private void OnRead(string text)
{
if (OnReadLine != null)
OnReadLine(this, new LineEventArgs(text));
}
}
Teşekkür
'Task.WaitAll (x);' mevcut 'Dispatcher'ı engeller, böylece 'TextBox'unuz tüm satırlar okunana kadar güncellenmez. Kilitlenmeyeceğini söyleyin .. –