Zum Inhalt springen

Event C# .net 2.0


Empfohlene Beiträge

Geschrieben

Hallo Leutz,

ich habe eine Form, aus der Form erzeuge ich ein Obj dass auf eine Nachricht von einem Serivce per TCP warte. Jetzt habe ich mir eine Event geschrieben das ausgelöst werden soll, sobald eine Nachricht eintrifft. Soweit noch alles klar. Event wird auch ausgelöst... Aber dann bekommt ich diesen Fehler:

Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement lbMessage erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde.

Warum verstehe ich auch... Nur keine Ahnung wie ich das in den Griff bekomme. Eine Einfache Erklärung würde bestimmt schon helfen.

Form Class


private void StartClient()
{
rc = new RemotingClient.RemoteClient();
rc.event_IncomingMessage += new RemotingClient.IncomingMessageDelegate(this.OnIncomingMessage);
rc.StartListen();
}

public void OnIncomingMessage( string strMessage )
{
//hier kommt der Fehler...
lbMessage.Items.Add(strMessage);
}
[/PHP]

Hier der Code aus dem RemoteClient

[PHP]

public delegate void IncomingMessageDelegate( string strMessage );

public class RemoteClient
{

public event IncomingMessageDelegate event_IncomingMessage;

public RemoteClient()
{
}
....

....

Remotable.StructResponse OnServerEvent(Remotable.StructAction structAction)
{
...

this.event_IncomingMessage(strMessage);
...
}

Geschrieben

Hi. Dein TCP Reader arbeitet asnychron, also in einem eigenen Thread. Wenn dieser Thread jetzt dein Main-Form manipulieren würde, könnte das unvorhersehbare Folgen haben da du nicht weißt in welchem Zustand sich das Form befindet, bzw. welche Threads im Moment auch noch Änderungen vornehmen.

Deswegen darf nur der Thread auf Windows Forms Komponenten zugreifen, der auch der Eigentümer dieser Komponenten ist. Eine mögliche Lösung findest du auf meinem Blog:

.NET 2.0 : Ansynchroner Datenbankzugriff mit .NET 2.0

Hier mache ich eine asynchronen Datenbankabfrage und gebe das Ergebnis zurück an das MainForm.

Geschrieben

.NET 1.1 : Ansynchroner Aufruf? Vielleicht ist das ja dasselbe Problem?

Habe in meiner Dlg-Class einen FileSystemWatcher laufen. Dieser wird auch ausgelöst und startet danach eine Funktion in der eine RAS Verbindung aufbaut und verschiedene Informationen an den Dialog übergibt.

Über den Button 'Verbinden' löse ich dieselbe Aktion aus mit dem gewünschten Erfolg. Aber bei dem FileSystemWatcher Event bekomme ich nur sporadisch den gewünschten Effekt. Jemand eine Idee was das sein könnte?

Geschrieben

Doch der Watcher löst aus. Aber die Verbindung in der RAS kommt nicht immer zu stande. Die Verbindung wird irgendwie schon aufgebaut nur bekomme ich von der RAS Falsche Events und Infos zurück. Ist da ein Unterschied vorhanden??? ob ich jetzt auf dem Dlg den Button klicke und ein Event auslöse oder ob der FileWatcher die Aktion auslöst...

Geschrieben

Ja, das ist schon ein Unterschied. Aber aus diesem Watcher-Event wird ja nur die RAS Verbindung aufgebaut und vermutlich nichts mit deiner GUI gemacht, oder?

Man müsste den Code mal sehen.

Geschrieben

Die Verbindung sollte sich dann nicht anders verhalten. Es sein denn du initiierst die Verbindung durch einen Methodenaufruf eines Controls. Wie gesagt, man müsste den Code sehen.

Geschrieben

Also ich habe den Fehler gefunden. Ich hatte... wie auch immer 2 EventHandler laufen. Also habe ich gleich 2 mal dieselbe eine Nachricht erhalten, das dann die Ras etwas durcheinander gebracht hat...

THX

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...