Hallo zusammen,
ich stehe z.Z vor folgendem Problem:
Die Bibliothek System.Net.FtpClient (http://netftp.codeplex.com/) stellt über der Property FtpLogStream ein Objekt vom Typ _Stream _zur Verfügung. Dieser Stream teilt permanent die Kommunikation zwischen dem Client und dem FTP-Server zeitnah mit. Neben dem loggen möchte ich die Streamausgabe kontinuierlich in einer Textbox ausgeben. Mein Problem liegt jetzt darin, dass ich feststellen muss, wann der Stream erneut Daten empfangen hat, damit ich diese in die Textbox schreiben kann. Nun verfügt die Klasse Stream über kein Event ala "DatenEmpfangen". Wie kann ich festellen, ab wann der Stream Daten empfangen hat bzw. wie kann ich die Daten des Streams direkt beim erneuten Datenempfang in eine Textbox umleiten?
Gruß
Ich bin mal so frei und poste in C# 5 + .net Framework 4.5 Beispiel
class Form1 : Form
{
FtpClient _ftpClient;
Stream _ftpLogStream;
TextReader _logReader;
public Form1()
{
InitializeComponent();
InitializeFtp();
}
void InitializeFtp()
{
//...
StartReadingAsync();
}
async void StartReadingAsync()
{
_ftpLogStream = _ftpClient.FtpLogStream;
_logReader = new StreamReader(_ftpLogStream);
while(true)
{
var line = await _logReader.ReadLineAsync();
textBox1.Text += line + Environment.NewLine;
}
}
}
Hi pdelvo,
ich selber verwende z.Z noch das Framework 4.0, wodurch async/await leider nicht für mich verwendbar ist. Aber wie ich an deinem Beispiel sehe, geht es in Richtung Mutlithreading. Danke für dein Beispiel!
Gruß