παπι Δημοσ. 24 Οκτωβρίου 2016 Δημοσ. 24 Οκτωβρίου 2016 ας πουμε εχουμε αυτο bool isWorkig = false; async Task Foo() { while(isWorking) await Task.Delay(100); isWorking = true; DoThat(); DoThis(); isWorking = false; } Μπορουμε να δουμε ποσα call εχει η Foo; Και αν μπορουμε, μπορουμε να τα ακυρωσουμε; Τι θελω να κανω. Αυτη η Foo εχει πολλα reference, το θεμα ειναι πως αν εκτελεστει μια φορα ενω εχει 10 call απο πισω, δεν θα χρειαστει να την ξαναεκτελεσω.
kagelos Δημοσ. 25 Οκτωβρίου 2016 Δημοσ. 25 Οκτωβρίου 2016 bool isWorkig = false; async Task Foo() { if (isWorking) { while(isWorking) await Task.Delay(100); return; } isWorking = true; DoThat(); DoThis(); isWorking = false; } Βάλε και κανένα lock για να την αλλάξεις και να τσεκάρεις την τιμή της όμως.
παπι Δημοσ. 25 Οκτωβρίου 2016 Μέλος Δημοσ. 25 Οκτωβρίου 2016 if (isRouting) { if (isRoutingCallPedding) return; isRoutingCallPedding = true; while (isRouting) await Task.Delay(100); } isRoutingCallPedding = false; isRouting = true; Κατι τετοιο ηθελα. Lock δεν βαζω για flag, απλα ενα volatile νομιζω πως ειναι οκ.
AllCowsEatGrass Δημοσ. 25 Οκτωβρίου 2016 Δημοσ. 25 Οκτωβρίου 2016 CancellationToken νομίζω πως χρειάζεσαι.http://stackoverflow.com/questions/10134310/how-to-cancel-a-task-in-await
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα