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

 

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

Προσωρινό πάγωμα φόρμας κατα τη διάρκεια διαδικασίας

Îåêßíçóå áðü ôï ìÝëïò mclisme. Τελευταία δημοσίευση από το μέλος mclisme στις 25-11-2008, 13:45. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  25-11-2008, 13:22 46455

    Προσωρινό πάγωμα φόρμας κατα τη διάρκεια διαδικασίας

    Γειά χαρά, έχω το εξής πρόβλημα:
    Από ένα treeview control, χρησιμοποιώντας την εντολή writealltext γράφω σε ενα αρχείο κειμένου, τα ονοματα όλων των nodes, ένα σε κάθε γραμμή. Επειδή έχω μεγάλο αριθμό nodes (1000+) η διαδικασία διαρκεί απο 2 μέχρι 10 δευτερόλεπτα και γιαυτό θέλω να δείχνω στον χρήστη την πρόοδο που γίνεται χρησιμοποιώντας ενα progressbar control.
    Επειδή όμως ο χώρος στην φόρμα μου είναι περιορισμένος, δημιούργησα μια νέα φόρμα που περιέχει το progressbar control και έγραψα τον κώδικα έτσι ώστε για κάθε μια εγγραφή,
    να προχωρά και η πρόοδος του progressbar control κατά ένα βήμα.
    Ο κώδικας δουλεύει κανονικά, το αρχέιο δημιουργείται σωστά, όμως όσο διαρκεί η εγγραφή, η δεύτερη φόρμα που χρησιμοποιώ εμφανίζεται παγωμένη και φυσικά δεν ανανεώνεται η πρόοδος.
    Απλά για όσο διαρκεί η εγγραφή ο χρήστης βλέπει την δεύτερη φόρμα που περιέχει ενα label και το progressbar control, τα οποία όμως εμφανίζονται λευκά εντελώς! χωρίς περιεχόμενο δηλαδή, και όταν τελειώνει η διαδικασία η φόρμα αυτή κρύβεται, και επανέρχεται στην βασική, δηλαδή επι της ουσίας δεν καταφέρνω τίποτα!
    Πως γίνεται να λειτουργήσει σωστά το παραπάνω concept?

    Ευχαριστώ!
  •  25-11-2008, 13:34 46457 σε απάντηση της 46455

    Απ: Προσωρινό πάγωμα φόρμας κατα τη διάρκεια διαδικασίας

    Εχω την υποψία ότι έχουμε παραπέμψει σε αυτό εδώ το post πάνω από 10 φορές ως τώρα, για θέματα που ομοιάζουν με το παρόν, και είμαι περήφανος για αυτό μια και το είχα ξεκινήσει εγώ :)

    Ρίξε μια ματιά μήπως βοηθηθείς στα αρχικά concepts. Αν και το thread είναι αρκετά παλιό, το concept του ποιού thread ενημερώνει ποιά φόρμα είναι πάντα επίκαιρο και μπορεί να σου εξηγήσει γιατί "παγώνει" η φόρμα σου (αν και εγώ δεν χρησιμοποιούσα gauge, το effect είναι σχεδόν το ίδιο). Εδώ είμαστε βέβαια και για τη συνέχεια :)

     

     


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  25-11-2008, 13:35 46458 σε απάντηση της 46455

    Απ: Προσωρινό πάγωμα φόρμας κατα τη διάρκεια διαδικασίας

    Θα μπορούσες να χρησιμοποιήσεις την Application.DoEvents αλλά νομίζω και πάλι θα έχεις κάποια μικροπροβληματάκια. Σίγουρα όμως θα δεις μεγάλη βεκτίωση και ίσως αν μείνεις μόνο στην εμφάνιση ενός progress bar να μην καταλάβεις και τίποτα. Αν όμως αργότερα θα ήθελες και να γράφεις στην φόρμα προόδου πιο node γράφεται σε αρχείο τότε θα παρατηρήσεις ότι η DoEvents "πηδάει" κάποια nodes ή δεν τα εμφανίζει σωστά. Το πιο σωστό θα ήταν να φτιάξεις ένα δεύτερο Thread, σε αυτό το Thread να μεταφέρεις τον κώδικα που γράφεις στο αρχείο και να ενημερώνεις το Application Thread στο οποίο θα έχεις φορτώσει την φόρμα προόδου, την πρόοδο που έχει γίνει.

    Παραδείγματα θα βρεις αρκετά στο Net για αυτό το θέμα.

  •  25-11-2008, 13:36 46459 σε απάντηση της 46455

    Απ: Προσωρινό πάγωμα φόρμας κατα τη διάρκεια διαδικασίας

    Ρίξε μία ματιά στο BackgroundWorker component το οποίο σου επιτρέπει να εκτελέσεις μία μακροχρόνια διαδικασία σε ξεχωριστό thread αλλά και να δείχνεις την πρόοδο της εργασίας χωρίς πολλούς μπελάδες και χωρίς να χρησιμοποιείς ξεχωριστές φόρμες. Το θέμα έχει ξανασυζητηθεί, οπότε κάνε και ένα search στο DNZ για να βρεις τις παλαιότερες συζητήσεις.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  25-11-2008, 13:45 46460 σε απάντηση της 46459

    Απ: Προσωρινό πάγωμα φόρμας κατα τη διάρκεια διαδικασίας

    Ευχαριστώ για την άμεση απόκριση παιδιά, θα κοιτάξω όλα αυτά τα topics που αναφέρετε και φαντάζομαι οτί κάπου εκεί θα βρίσκεται και η λύση μου. Απλά στην σκέψη της αναζήτησης, ο όρος "πάγωμα" μου έμοιαζε αδόκιμος και δεν το προσπάθησα! Ευχαριστώ και πάλι.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems