Funktion so oft wiederholen bis ein Timeout erreicht wird
-
Hi,
Wie kann man am Elegantersten erreichen, das eine Funktion so oft ausgeführt wird, bis:
- entweder ein Timeout erreicht wird
- oder die Funktion erfolgreich ist (bzw eine andere spezielle Condition eintritt)Gibt es da was elegantes in C#.Net?
-
1. In einem eigenen Thread?
2. Gibt es in der Funktion bereits eine Schleife oder soll sie immer wieder aufgerufen werden?
-
1. Ein Timer
2. Ein Event
-
@EricL
Mit einer Schleife?
"while not success or timeout, retry"
-
hustbaer schrieb:
@EricL
Mit einer Schleife?
"while not success or timeout, retry"Hmm ein Polling halt ich hier fuer sehr ineffizient. Meinst du nicht das ein Event ,in der Funktion welche eine spezielle Kondition erfuellen soll, zu feuern waere hier besser?
-
Unnötiges Rätselraten solange der OP sich nicht auskotzt was er gerne haben möchte.
Und ich schätze mal hustbaer möchte etwas mehr machen als nur Pollen ... zum Beispiel den eigentlichen Auftrag abarbeiten zwischen zwei "not success or timeout" ...
-
Ich meine das so:
DoItUntilItFuckingWorks(task, timeout) do if (task()) return success; while !timeout return timeout_failure;
(Keine Ahnung was die für Timeouts am besten geeignetste Steady-Clock in C# ist, daher in Pseudocode. Sollte aber bei Bedarf schnell herauszufinden sein)
Das ist die (für mich) einzig "richtige" Antwort auf die Frage des OP: sie übersetzt einfach 1:1 das in Code, wonach er gefragt hat.
Falls er etwas anderes wissen will (was ich für leicht möglich aber bei weitem nicht sicher halte), dann hat er die Frage falsch formuliert.
Wie ihr hier auf Threads, Timer, Events etc. kommt, ist mir ein Rätsel.
OK, nicht ganz ein Rätsel, aber ihr geht hier von diversen höchst spekulativen Annahmen aus. Der OP soll lernen zu sagen was er genau will, inklusive nötigen Kontext. Das hilft ihm, und es hilft uns. Und mit ins Blaue raten verwirrt ihr ihn unter Umständen bloss, falls ihr daneben liegen solltet.