Gibt es in C# einen Weg, eine Methode aufzurufen, so dass die Methode abgebrochen wird, wenn die Methode zu lange dauert zur aufrufenden Methode? Ich denke, ich kann dies mit Threading tun, aber was ist, wenn Threading nicht benötigt wird?Eine Methode aufrufen und abbrechen und zur aufrufenden Methode zurückkehren, wenn sie zu lange dauert
Als Referenz ruft die Methode, die ich möglicherweise abbrechen/stoppen/abbrechen muss, die CorelDraw 15-API auf. Dies öffnet eine Instanz von CorelDraw und ich habe nicht wiederholbare Fehler in dieser Methode erhalten. Bedeutung, ich kann das gleiche Bild zweimal verarbeiten und einmal wird es einfrieren oder Fehler und das andere wird es nicht.
Die aktuelle Lösung für das Problem, das ich verwende, ist eine zweite Anwendung, die Process.Start(firstAppExecutablePath)
tut und dann prüft eine Variable in einer Textdatei und wenn die Variable nicht nach 10 Minuten ändert, wird .Kill();
für die Instanz von aufgerufen der Prozess. Ich würde es vorziehen, diese Lösung möglichst zu vermeiden, da sie klobig und anfällig für Probleme ist. Da es .Kill();
läuft, ist es sehr chaotisch, wie Dinge schließen, aber im Allgemeinen kein Problem verursacht.
Wenn es nicht mit Gewinde versehen ist, dann gibt es keine Möglichkeit, ein Timeout zu überprüfen, weil der ausführende Thread Ihre Methode ausgeführt wird. Es gibt nichts zu überprüfen "hat es zu lange gedauert?" – dman2306
Ist Ihre API asynchron? Dafür ist ein CancellationToken zuständig. – Crowcoder
Was macht die Methode? – Luaan