Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Επισκέπτης
Δημοσ.

Το Interface είναι ένα συμβόλαιο για το πώς θα υλοποιηθεί μια κλάση. Λες θέλω να περιέχει αυτές κι εκείνες τις functions με τις τάδε μεταβλητές του δείνα τύπου και από εκεί και πέρα ο καθείς το υλοποιεί ανάλογα με τα κέφια του. Αυτός είναι ο ορισμός του interface κι όχι βέβαια αυτά τα κουλά που μας λες.

 

Τη μία χρησιμοποιείς τη λέξη interface με την τυπική της έννοια και την άλλη με την ευρύτερη δηλαδή ως ένα μέσο επικοινωνίας μεταξύ δύο οντοτήτων. Και μετά σου κάνει εντύπωση που κανείς δεν καταλαβαίνει τι θες να πεις.

 

Κοίταξε να δεις, όλοι κατά καιρούς τυγχάνει να εκφράσουμε άποψη σε κάτι που δεν γνωρίζουμε καλά. Όταν όμως μας επισημαίνει κάποιος που γνωρίζει καλύτερα το σφάλμα συνήθως σιωπούμε ως ένδειξη μεταμέλειας. Η δική σου ιδιαιτερότητα είναι ότι συνεχίζεις ακάθεκτος να αναπαράγεις τις ίδιες κουταμάρες. Γιατί; Είναι τόσο δύσκολο να παραδεχτείς ότι δεν γνωρίζεις το αντικείμενο; Δηλαδή τι νομίζεις ότι θα γίνει, θα βγει αύριο πρωτοσέλιδο σε όλες τις εφημερίδες της επικράτειας ότι δεν γνωρίζεις κάτι και θα στιγματιστείς εφόρου ζωής; Δεν το καταλαβαίνεις ότι γίνεσαι περίγελος έτσι; Τι στο καλό, τόση μεγάλη ανάγκη για επιβεβαίωση έχεις;

  • Απαντ. 45
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοσ.

@Elorant,

Κοίτα δεν μπορώ να είμαι στο μυαλό του καθένα και όταν απαντώ για εκείνα που ο άλλος μου λέει ότι δεν κατάλαβε (όχι επειδή είναι μπουμπούνας, αλλά επειδή εγώ δεν έγραψα με τρόπο να καταλάβει), τότε οφείλω να του απαντήσω. Δεν το κάνω από πείσμα.

Στο θέμα που ο Defacer εχει αναφερθεί, ο Groot τον επικροτεί, και εσύ επίσης αναρωτιέσαι...πώς συζητάει κανείς για κάτι που δεν έχει ειδικότητα, π.χ μια Net γλώσσα η απάντηση είναι απλή, μην ειδικεύεις το θέμα. Πολλές φορές τα προβλήματα δεν εχουν να κάνουν με ένα ειδικό θέμα της γλώσσας αλλά με κάτι γενικό.  Το πρώτο που έγραψα εδώ ήταν το Refresh. Ο Defacer πρότεινε χλευαστικά το reboot. Το πέταξε για να πει ότι είμαι άσχετος με το θέμα. Ο Groot έκοψε το "πέρα βρέχει" και το έκανε "δεν βρέχει". Εσύ μου προτείνεις να μην γίνομαι περίγελος, γιατί έτσι γίνεται ο "άσχετος". Δυστυχώς αυτά είναι εκτός θέματος, ενώ το να είναι κάποιος σχετικός ή άσχετος είναι εντός θέματος. Η συμμετοχή βγάζει το αν είσαι σχετικός η άσχετος. Αυτός που δεν γράφει εδώ παίζει να είναι οτιδήποτε. Αν καθένας που θα γράψει τη γνώμη του θα πρέπει να αντιμετωπίσει τον Defacer, τον Groot ή την Elorant ως εξεταστές, τότε δεν θα το κάνει. Δεν απορώ για το μικρό αριθμό συμμετοχής στο Προγραμματισμός - Προγραμματισμός...ενώ στο WebDesign γίνεται πανηγύρι - και εκεί όντως σπανίως θα συμμετέχω.

 

Αλλά ας ξεπεράσουμε τις κοκορομαχίες και τα εγώ του καθένα:

Ρωτώ..ποια είναι η λύση στο θέμα που ζήτησε ο OP

Όχι ποια νομίζουμε αλλά επακριβώς ποια είναι η λύση.

Μπορεί κανείς με απλή ελληνική γλώσσα να την εκφράσει, για να γίνει κατανοητή όχι μόνο από τον OP αλλά από τον καθένα που το διαβάζει. Να αντιληφθεί το σφάλμα δηλαδή!

 

Υ.Γ.

1 .Γράφω την Elorant - αν κάνω λάθος διόρθωσέ με, αλλά αυτή την εντύπωση έχω! Επιπλέον ο ορισμός που έδωσες για το interface βάζει το "συμβόλαιο" μέσα...πες το και σύμβαση, πες το όπως θες, δεν γράφεις κάτι διαφορετικό από αυτά που γράφω.

2. Πράγματι διαβάζοντας για την await κατάλαβα γιατί είχες ένσταση. Απλά αυτό που απάντησες ήταν λάθος. Η σωστή απάντηση είναι ότι η await χειρίζεται την ασύγχρονη ως σύγχρονη...στο event που εκτελείται η ασύγχρονη. Άρα πήρες τη γενική μου περιγραφή για τις ασύγχρονες την έβαλες πάνω στην περίπτωση της await..και γίναμε σαλάτα! Όμως από όλη αυτή τη διαφωνία και εγώ και πιστεύω και άλλοι αναγνώστες θα έχουν δείξει ενδιαφέρον, θα έχουν κοιτάξει τις συνδέσεις, όχι για να βγάλουν σκορ, αυτό είναι χαζό, αλλά για να μάθουν! Δηλαδή όπως και εγώ μαθαίνω από τη συζήτηση, έτσι κάνουν και άλλοι.

Καλό Απόγευμα!

Δημοσ.

Κοίτα δεν μπορώ να είμαι στο μυαλό του καθένα και όταν απαντώ για εκείνα που ο άλλος μου λέει ότι δεν κατάλαβε (όχι επειδή είναι μπουμπούνας, αλλά επειδή εγώ δεν έγραψα με τρόπο να καταλάβει), τότε οφείλω να του απαντήσω. Δεν το κάνω από πείσμα.

Χε... (και) με αυτό δείχνεις ότι δεν έχεις ιδέα. Ευτυχώς (δυστυχώς για εσένα από ό,τι φαίνεται και βάσει όσων έχεις πει) εδώ λέμε για αντικειμενικά πράγματα. Κάτι είναι αυτό και τίποτα άλλο.

 

 

Επίσης.. το "δεν βρέχει" θαρρώ παίζει να είσαι ο μόνος που δεν δείχνει να κατάλαβε τι εννοούσε ;)

 

Εκούσια; Ακούσια; Who knows!

Επισκέπτης
Δημοσ.

Και μόνο από το ότι σου δίνω την εντύπωση ότι είμαι γυναίκα καταλαβαίνει κανείς με τι κλινική περίπτωση έχει να κάνει. Οι γυναίκες, ξέρεις, δεν μιλάνε τόσο επιθετικά. Ούτε κι ασχολούνται πολύ με το πόσο ανόητος ή όχι είναι κάποιος, έχουν ανοσία στην ανδρική βλακεία. Πιστεύω να έχει γυναίκες εκεί που ζεις, έτσι; Εννοώ εκτός από κατσίκες, γελάδες κλπ.

 

Το κερασάκι. "Η σωστή απάντηση είναι ότι η await χειρίζεται την ασύγχρονη ως σύγχρονη...στο event που εκτελείται η ασύγχρονη." Νομίζω ότι πέρα από όλα τα άλλα έχεις κι ένα θεματάκι με τα ελληνικά σου. Αλλά αυτό από ότι βλέπω στο 'χουν πει κι άλλοι και παρόλα αυτά δεν σε απασχολεί. ΟΚ, συνέχισε να μας διασκεδάζεις. Εγώ πλέον γελάω με όλα αυτά γιατί δεν μπορώ να τα πάρω στα σοβαρά. Αν πάντως ισχύει αυτό που λέει ο defacer, ότι δεν γνωρίζεις την .NET νομίζω ότι όλη η συζήτηση αγγίζει τα όρια του σουρρεαλισμού.

 

Τεσπά, δεν πρόκειται να το συνεχίσω άλλο γιατί είναι προφανές ότι είσαι στην κοσμάρα σου. Θες απλά να λες την άποψη σου αδιαφορώντας για το αν είναι σωστή ή λάθος. Τίποτα, όλοι να λένε άλφα εσύ θα λες το βήτα γιατί ξέρεις καλύτερα.

Δημοσ.

Πιστεύω να έχει γυναίκες εκεί που ζεις, έτσι; Εννοώ εκτός από κατσίκες, γελάδες κλπ.

 

Και κάπου εδώ χάνεις το δίκιο σου.

  • Like 2
Επισκέπτης
Δημοσ.

Το δίκιο μου το 'χω χάσει προ πολλού απευθυνόμενος σε έναν άνθρωπο που απλά δεν ακούει οτιδήποτε κι αν του πεις. Πλέον, απλά κάνω την πλάκα μου.

Δημοσ.

Καλό το flame, σε άλλο κλίμα..

Για να ρίξω το thread λίγο πιο on topic μεριά, μιας και το async/await είναι αρκετά νόστιμο και με πολύ ψωμί. Παραθέτω το παρακάτω άρθρο  http://blog.stephencleary.com/2013/11/there-is-no-thread.html για όποιον ενδιαφέρεται, το οποίο προσπαθεί να κάνει debunk έναν αστικό μύθο...
 

 “No,” they cry, “if I am awaiting an operation, there must be a thread that is doing the wait! It’s probably a thread pool thread. Or an OS thread! Or something with a device driver…”


Not for the absolute beginner. Το βιβλίο του αρθρογράφου είναι επίσης αρκετά καλό, αν και cookbook, έχει αρκετά πρατικά παραδείγματα, best practices που αφορούν async task based μοντελο του .Net και λίγο background χωρίς να κουράζει με low level stuff.

Από προσωπικής σκοπιάς, αυτό που με βοήθησε όταν ανακάλυπτα όλο αυτόν τον καινούργιο κόσμο ήταν το ξεκαθάρισμα των διαφορών doing things in paraller vs doing things async.

  • Like 1
Επισκέπτης
Δημοσ.

Ένα καλό rule of thumb είναι πως αν έχεις μια εργασία που σου τρώει πολλά resources κάντο parallel, κι αν σου τρώει πολύ χρόνο κάντο asynchronous.

Δημοσ.

Το πρώτο που έγραψα εδώ ήταν το Refresh. Ο Defacer πρότεινε χλευαστικά το reboot. Το πέταξε για να πει ότι είμαι άσχετος με το θέμα. 

 

Εξήγησέ μας λίγο αν θες τι είναι το "refresh" ας πούμε σε ένα dialog box, και τότε ίσως καταλάβεις γιατί πρότεινα το reboot.

Δημοσ.

Συγνώμη Elorant που σε προσφώνησα με το Η. Αλλά είδα ότι το φύλο ήταν μυστικό, μήπως έκανες λάθος, ή το άφησες επίτηδες έτσι;

 
@AllCowsEatGrass

¨

Δες δυο περιπτώσεις. Αυτό γίνεται στη VB6 και ας το δοκιμάσει κανείς στην NET να μας πει αν δουλεύει. Να βάλει ένα loop να αλλάζει τιμές σε ένα label, σε μια φόρμα και να δοκιμάσει: Α. να μετακινήσει το παράθυρο, και να δει αν θα σταματήσει το loop όσο μετακινεί το παράθυρο και Β. να το κάνει αυτό όταν κρατάει πατημένο το πλαίσιο Χ πάνω δεξιά (στο τέλος το τραβάμε από το button χωρίς να κλείσουμε το παράθυρο, και μετά αφήνουμε το πλήκτρο του ποντικιού).

 


Defacer...δεν ξέρω αν έτυχε να δεις τον κώδικα της Μ2000. Έτυχε;

Λοιπόν refresh, repaint, show, visible=true και άλλα τέτοια έχουν να κάνουν με την εμφάνιση της φόρμας. Σε προγράμματα Visual, δίνουν πάντα events για όλα τα στάδια μιας φόρμας. Το ενδιαφέρον εδώ είναι το Load. Η σειρά και δεν νομίζω να έχει αλλάξει, είναι Load, Resize, Repaint και μετά Activate. Αν για κάποια αιτία δεν μπορεί να γίνει το Repaint, Π.χ. κάποιος πετάξει το μήνυμα "repaint" πριν φθάσει στην windproc την ρουτίνα που εκτελεί τα μηνύματα, τότε δεν θα έχουμε τίποτα στη φόρμα. Αυτό συμβαίνει όταν βλέπεις παράθυρο χωρίς στοιχεία μέσα! Αν λοιπόν στο Load και πριν αυτό τελειώσει δώσω το repaint προγραμματιστικά θα γίνει. Αυτό γίνεται με την εντολή Refresh στο Load Event. Αν λοιπόν το έκανε αυτό πριν ξεκινήσει το κατέβασμα εικόνας θα είχε την εμφάνιση της φόρμας, και τον έλεγχό της από άλλη κλάση (φόρμα), αλλά δεν θα γίνονταν Activate (αφού δεν έχει τελειώσει το Load Event).

Ό άλλος τρόπος είναι να ξεκινήσει το κατέβασμα και να έχει το data WithEvents (ή το ανάλογο σε NET), και ενημερώνει το Picturebox όταν έρθει η εικόνα, αλλά η φόρμα θα ειναι λειτουργική. Θα δείχνει κείμενο και θα δέχεται μηνύματα, π.χ. επιλογές του χρήστη.

Δημοσ.

Πολύ ωραία όλα αυτά.

 

Καταλαβαίνεις όμως γιατί (εκτός παθολογικών καταστάσεων που το κάνεις επίτηδες) δεν υπάρχει ποτέ περίπτωση να κάνεις set text και να μη βλέπεις διαφορά ενώ στην ίδια περίπτωση με refresh να δεις διαφορά; Και γιατί και στις δύο περιπτώσεις αν πετάξεις ένα ShowDialog που είπε ο OP θα δεις διαφορά;

 

Η ερώτηση είναι μάλλον ρητορική γιατί αν καταλάβαινες τι εμποδίζει το set text να "δείξει" (μόνο ένα πράγμα μπορεί να είναι εφόσον κάνει invoke) θα καταλάβαινες επίσης ότι το ίδιο πράγμα εμποδίζει και το refresh και γενικά οτιδήποτε άλλο και να δοκιμάσεις να κάνεις. Εξού και τα περι reboot.

Δημοσ.

Δεν κατάλαβα, ασφαλώς! Δεν είναι βέβαιο ότι θα γίνεται αυτόματα refresh σε κάθε Set Text. Π.χ. αν έχεις 30 Textbox δεν πρόκειται να κάνει το σύστημα 30 refresh! Αν έχει μάλιστα ήδη δρομολογήσει ένα refresh και κάτι στην εσωτερική Repaint δεν το τερματίζει, γιατί αργεί να έρθει η εικόνα, επειδή το Resource είναι στο γάμο του Καραγκιόζη, τότε τα επόμενα refresh θα περιμένουν! Αλλά θα έχουμε ξεκάθαρη εικόνα...ότι έχει κολήσει η φόρμα. Θα περνάς άλλη από πάνω και θα αφήνει στάμπες!

 

Συζήτησα για την περίπτωση που το Repaint δεν το δίνει το σύστημα, είμαστε στο Load event γιατί δεν είναι η ώρα του, και η SetText δεν πρόκειται να το παράγει. Στο Load Event βάλε όσα set text θέλεις, δεν πρόκειται να δείξουν την φόρμα.

 

http://www.vb-helper.com/tip_refresh_versus_invalidate.html

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...