Ich habe eine Bibliothek von Drittanbietern, die eine Klasse enthält, die eine Funktion asynchron ausführt. Die Klasse erbt von der Form. Die Funktion führt grundsätzlich eine Berechnung anhand von in einer Datenbank gespeicherten Daten durch. Sobald es beendet ist, ruft es ein _Complete-Ereignis im aufrufenden Formular auf.Eine asynchrone Methode in C#
Was ich tun möchte, ist die Funktion synchron aufrufen, aber von einem nicht-Windows-Formular-Anwendung. Das Problem ist, egal was ich mache, meine Anwendungsblöcke und der _Complete-Event-Handler wird nie ausgelöst. Von einem Windows-Formular kann ich simulieren, die Funktion, die synchron läuft, indem ich ein "vollständiges" Kennzeichen und ein "while (! Vollständiges) application.doevents" benutze, aber offensichtlich ist application.doevents nicht verfügbar in einer non-windows Formularanwendung.
Gibt es etwas, das mich davon abhalten würde, die Methode der Klasse außerhalb einer Windows-Formularanwendung zu verwenden (aufgrund der Erben von 'Form')? Gibt es einen Weg, wie ich das umgehen kann?
Danke, Mike
Ich bin nicht klar. Wird der Code ordnungsgemäß ausgeführt, wenn er in einer nicht Windows-Anwendung asynchron ausgeführt wird? Oder blockiert es immer unbegrenzt in einer Nicht-Windows-Anwendung? – Sam
In einer Nicht-Windows-Anwendung blockiert es unbegrenzt, da das _Complete-Ereignis nie ausgelöst wird, obwohl es versucht hat, ManualResetEvents usw. zu verwenden. In einer Windows-Formularanwendung funktioniert es einwandfrei. – mikecamimo