Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

user interface update

Îåêßíçóå áðü ôï ìÝëïò DaltonGR. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 07-07-2008, 17:39. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  07-07-2008, 14:44 43308

    user interface update

    Καλημέρα,

    Έχω ένα πρόβλημα, έχω μια απλή φόρμα που με το πάτημα ενός κουμπιού ξεκινά την εκτέλεση 3 ρουτίνες την μία μετά την άλλη. Μόλις ολοκληρωθεί η πρώτη ρουτίνα ξεκνά η δεύτερη κτλ. Όταν τελειώσει μια ρουτίνα προσθέτω κάποια listview item σε ένα listview στην φόρμα μου. μόνο που όταν τελειώνει η πρώτη ρουτίνα δεν εμφανίζεται αυτό το listview item.Πώς μπορώ να ενημερώνω το user interface προτού ξεκινήσει η επόμενη ρουτίνα.

  •  07-07-2008, 15:34 43311 σε απάντηση της 43308

    Απ: user interface update

    Μπορείς να βάλεις την κάθε ρουτίνα να εκτελείται σε νέο thread όπου μόλις ολοκληρώνεται, θα ενημερώνει το UI σου. Ρίξε μια ματιά εδώ: http://www.dotnetzone.gr/cs/blogs/mkelaiditis/pages/10156.aspx

     


    Vir prudens non contra ventum mingit
  •  07-07-2008, 17:39 43318 σε απάντηση της 43308

    Απ: user interface update

    Κάλεσε την Application.DoEvents για να ανανεωθεί το UI. Τόσο το UI όσο και ο δικός σου κώδικας εκτελούνται στο ίδιο thread. Όσο τρέχει ο δικός σου κώδικας το thred δεν μπορεί να επεξεργαστεί τα UI events που είναι απαραίτητα για να ανανεωθεί. Η Application.DoEvents λέει στο thread να κάνει ακριβώς αυτό πριν συνεχίσει με την εκτέλεση του δικού σου κώδικα.

    Η λύση αυτή είναι σχετικά ανεκτή και εύκολη αν οι ρουτίνες σου κρατάνε λίγο. Διαφορετικά θα πρέπει να εκτελέσεις τον κώδικα σου σε άλλο thread όπως σου είπε και ο Μάνος. Είναι σχετικά εύκολο να το κάνεις αυτό χρησιμοποιώντας το BackgroundWorker component.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems