Implementieren eines Zeitlimits in c #

7

Ich bin neu in c #; Ich habe hauptsächlich Java gemacht.

Ich möchte ein Timeout etwas in die Richtung implementieren:

%Vor%

Wie kann ich das in C # implementieren? Danke!

    
Karan 13.04.2012, 15:42
quelle

5 Antworten

25

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%     
Scott Chamberlain 13.04.2012, 15:44
quelle
4

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.

    
JMK 13.04.2012 15:59
quelle
2

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%     
JamieSee 13.04.2012 16:06
quelle
1

Verwenden von Tasks für benutzerdefiniertes Timeout bei der Async-Methode

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

    
fmaccaroni 11.09.2017 20:05
quelle
0

Anders geht es mir auch:

%Vor%     
Samuel Poirier 05.03.2014 19:22
quelle

Tags und Links