Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

Datenempfang des Streams als Event feststellen bzw. Datenempfang direkt in eine Textbox weiterleiten
DerPapenberg
myCSharp.de - Member



Dabei seit:
Beiträge: 116

Themenstarter:

Datenempfang des Streams als Event feststellen bzw. Datenempfang direkt in eine Textbox weiterleiten

beantworten | zitieren | melden

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ß
private Nachricht | Beiträge des Benutzers
pdelvo
myCSharp.de - Member

Avatar #avatar-3354.png


Dabei seit:
Beiträge: 1.346

beantworten | zitieren | melden

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;
		}
	}
}
private Nachricht | Beiträge des Benutzers
DerPapenberg
myCSharp.de - Member



Dabei seit:
Beiträge: 116

Themenstarter:

beantworten | zitieren | melden

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ß
private Nachricht | Beiträge des Benutzers