Ein möglicher Weg wäre
%Vor%Sie haben jedoch zur Zeit keine Möglichkeit, aus Ihrer Schleife auszubrechen. Ich würde empfehlen, dass tryMethod einen booleschen Wert zurückgibt und zu
ändert %Vor%Ich denke, du könntest das mit einem Timer und einem Delegaten machen, mein Beispielcode ist unten:
%Vor%Sie haben tryMethod, Sie erstellen dann einen Delegaten und zeigen diesen Delegaten auf tryMethod, dann starten Sie diesen Delegaten Asynchron. Dann haben Sie einen Timer, mit dem Intervall 5000ms, geben Sie Ihren Delegaten in Ihre Timer-Methode verstrichen (was funktionieren sollte, da ein Delegat ein Referenztyp ist, kein Werttyp) und sobald die 5000 Sekunden verstrichen sind, rufen Sie die EndInvoke auf Methode für Ihren Delegierten.
Solange tryMethod () dies nicht blockiert, sollten Sie tun, was Sie wollen:
Nicht sicher für die Sommerzeit oder die Zeitzone ändern, wenn Sie mobil sind:
%Vor%Zeitzone und Sommerzeit sichere Versionen:
%Vor%(.NET 3.5 oder höher erforderlich für DateTimeOffset.)
%Vor%Hier meine Implementierung einer benutzerdefinierten Klasse mit einer Methode, um eine Aufgabe mit einer Zeitüberschreitung zu versehen.
%Vor%Dann kannst du es so nennen:
%Vor%oder
%Vor%Und Sie können ein Abbruch-Token hinzufügen, wenn Sie die laufende asynchrone Aufgabe abbrechen möchten, wenn es zu einem Timeout kommt.
Hoffe es hilft