Entwickler-Ecke
C# - Die Sprache - Invoke einer Funktion mit Rückgabeparameter ?!?
winx - Di 06.11.07 15:37
Titel: Invoke einer Funktion mit Rückgabeparameter ?!?
Hi,
wie ist es möglich in einer Funktion mit Rückgabeparameter
einen Zugriff auf ein Formular zu machen? Die Funktion
muß invoked werden, damit kein Thread-übergreifender Aufruf eintritt.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| public int emptyWTDetected() { if (m_MainForm.InvokeRequired) { m_MainForm.BeginInvoke(new EmptyWTdetected(emptyWTDetected)); return -1; }
bool success = m_mainForm.tuIrgendwas(); return success;
} |
bei mir kommt jetzt immer -1 zurück, is ja auch klar irgendwie :-)
Wie kann ich denn das problem lösen???
danke,
winx
Kha - Di 06.11.07 15:43
BeginInvoke ist asynchron, kann also schlecht sofort einen Rückgabewert liefern. Benutze stattdessen die synchrone Variante Control.Invoke.
winx - Di 06.11.07 16:14
alles klar und als return wert? oder diesen weglassen?
Kha - Di 06.11.07 16:16
Was genau meinst du genau bzw. hast du dir den SDK-Artikel zu Invoke überhaupt schon einmal angeschaut?
winx - Di 06.11.07 16:36
hab ich noch nich gelesen, wieso.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| public int emptyWTDetected() { if (m_MainForm.InvokeRequired) { m_MainForm.BeginInvoke(new EmptyWTdetected(emptyWTDetected)); return -1; } |
Wenn ich hier nix zurückgebe, dann kommt er doch 2mal in die funktion rein
und das is nix...
weisste was ich meine?
Kha - Di 06.11.07 16:59
Du willst die Methode also von einem zweiten Thread aus aufrufen, sie soll dann selbst erkennen, dass sie im falschen Thread ist und sich selbst synchronisiert aufrufen? Interessante Konstruktion ;) , den Rückgabewert der Rekursion bekommst du jedenfalls, wie ich schon schrob, mit Invoke.
Wenn du nur tuIrgendwas synchron aufrufen willst, kannst du natürlich auch einfach gleich diese Methode invoken.
PS: Du solltest dich einmal einigen, ob die Funktion nun int oder bool zurückgibt ;) .
winx - Di 06.11.07 17:18
Habs, glaub ich verstanden :-)
danke für deine Hilfe.
p.s: sie gibt int zurück :-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!