codesix Δημοσ. 19 Ιουνίου 2013 Δημοσ. 19 Ιουνίου 2013 Έφτιαξα ένα σύστημα αποστολής μαζικών email αλλα όταν πατάω το κουμπί send μου βγάζει το ακόλουθο μήνυμα
nucleus Δημοσ. 19 Ιουνίου 2013 Δημοσ. 19 Ιουνίου 2013 http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx και το κατάλληλο property http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.workersupportscancellation.aspx και αυτή είναι η μέθοδος που πρέπει να καλέσεις για την ακύρωση http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.cancelasync.aspx 1
codesix Δημοσ. 19 Ιουνίου 2013 Μέλος Δημοσ. 19 Ιουνίου 2013 Ευχαριστώ αλλα δεν ξέρω σε ποιο σημείο του κώδικα να βάλω αυτά που έστειλες. Αν θές και έχεις χρόνο κάνε ένα import στο Form1.vb Σε ευχαριστώ πολύ φίλε μου Form1.zip
nucleus Δημοσ. 19 Ιουνίου 2013 Δημοσ. 19 Ιουνίου 2013 Ενδιαφέρον. Λογικά πρέπει να το κάνεις στο Form_Load event. Private Sub EmailSender_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try Dim tool As New ToolTip() tool.SetToolTip(TxtSenderUsername, "Input your email(s).") tool.SetToolTip(TxtSenderPassword, "Input your password.") tool.SetToolTip(TxtRecipientEmail, "Input your target email(s).") tool.SetToolTip(TxtRecipientCCEmail, "Input your CC email(s).") tool.SetToolTip(TxtRecipientBCCEmail, "Input your BCC email(s).") tool.SetToolTip(CheckBox1, "Enable/Disable CC emails?") tool.SetToolTip(CheckBox2, "Enable/Disable BCC emails?") tool.SetToolTip(TxtEmailSubject, "Input your email subject..") tool.SetToolTip(EmailMessage, "Input your email message.") tool.SetToolTip(ListBoxAttachmentsFiles, "List of file(s) to attach.") tool.SetToolTip(ButtonAttach, "Attach file(s).") tool.SetToolTip(ButtonRemoveFiles, "Remove file(s).") tool.SetToolTip(CheckBox3, "Send in Hmtl format?") tool.SetToolTip(RadioButton1, "Send with Low Priority?") tool.SetToolTip(RadioButton2, "Send with Normal Priority?") tool.SetToolTip(RadioButton3, "Send with High Priority?") tool.SetToolTip(RadioButton4, "Activate bomber?") tool.SetToolTip(RadioButton5, "Ativate mail count?") tool.SetToolTip(NumericUpDown1, "Input number of mails to send.") tool.SetToolTip(ButtonClearData, "Clear all information.") tool.SetToolTip(ButtonSend, "Send mail.") tool.SetToolTip(Buttonclose, "Close program.") Me.BackgroundWorker1.WorkerSupportsCancellation = true Catch ex As Exception MessageBox.Show(ex.Message, "Email Error", MessageBoxButtons.OK, _ MessageBoxIcon.Stop) End Try End Sub Εναλλακτικά θα μπορούσες να το κάνεις και μέσα από το designer επιλέγοντας το BackgroundWorker component και αλλάζοντας την τιμή του property WorkerSupportsCancellation σε true από εκεί.Η default τιμή είναι false για αυτό και έσκαγε στην πρώτη απόπειρα cancel.
codesix Δημοσ. 19 Ιουνίου 2013 Μέλος Δημοσ. 19 Ιουνίου 2013 Το δοκίμασα αλλα δεν. Τώρα δεν κάνει τίποτα .. τουλάχιστον πρίν έτρωγα ενα Error χαχα Πάρε αν θες το Full Project και δες τι κανω λάθος και κράτα το αν σου αρέσει... Ευχαριστώ για τον χρόνο σου. EmailSender.zip
nucleus Δημοσ. 19 Ιουνίου 2013 Δημοσ. 19 Ιουνίου 2013 Φυσικά και δεν κάνει τίποτα αφού δεν είναι σωστός ο έλεγχος στην SendEmail. If RadioButton4.Checked = True Then If ButtonSend.Text = "Send" Then Me.BackgroundWorker1.RunWorkerAsync() TextBoxSentMails.Text = "0" disablegroupboxes() ButtonSend.Text = "Cancel" Else Me.BackgroundWorker1.CancelAsync() enablegroupboxes() ButtonSend.Text = "Send" End If ElseIf RadioButton5.Checked = True Then If NumericUpDown1.Value <= "0" Then MessageBox.Show("Input amount of emails to send.", "Email Error", MessageBoxButtons.OK, _ MessageBoxIcon.Stop) Else If ButtonSend.Text = "Send" Then Me.BackgroundWorker1.RunWorkerAsync() TextBoxSentMails.Text = "0" disablegroupboxes() ButtonSend.Text = "Cancel" Else Me.BackgroundWorker1.CancelAsync() enablegroupboxes() ButtonSend.Text = "Send" End If End If End If Εκτελεί την Me.BackgroundWorker1.RunWorkerAsync() αν το κείμενο του ButtonSend είναι Send αλλιώς κάνει cancel. Για βάλε ένα watch για το κείμενο ButtonSend.Text και δες. Σημείωση:Για να κάνει report ο backgroundWorker το Progress πρέπει το property WorkerReportsProgress να είναι επίσης true.Tελικά έχουμε Me.BackgroundWorker1.WorkerReportsProgress = True Me.BackgroundWorker1.WorkerSupportsCancellation = True
codesix Δημοσ. 19 Ιουνίου 2013 Μέλος Δημοσ. 19 Ιουνίου 2013 Δηλαδή να βάλω το κείμενο Watch στο ButtonSend ?
nucleus Δημοσ. 19 Ιουνίου 2013 Δημοσ. 19 Ιουνίου 2013 Όταν κάνεις βηματική εκτέλεση στο πρόγραμμα σου μέσα από το Visual Studio μπορείς να βλέπεις τις τιμές των μεταβλητών σου προσθέτοντας Watches (σκοπιές στα ελληνικά ίσως). Αρχικα τοποθετούμε breakpoints στον κώδικα μας.Πρόσθεσε ένα στην ButtonSend_Click.Ένα ακόμα στην ValidateEmail.Ένα στην SendEmail και τέλος ένα στην BackgroundWorker1_DoWork. Μετά Visual Studio πατάμε το F5(Start debugging).Η εκτέλεση θα σταματήσει στο πρώτο breakpoint που βρήκε στην ButtonSend_Click. Με το F11(Step Into) συνεχίζει την εκτέλεση δείχνοντας και την εκτέλεση όποιων συναρτήσεων συναντήσει.Το κίτρινο βελάκι δείχνει ποια εντολή εκτελείται.Με το F10 (Step Over) συνεχίζει την εκτέλεση χωρίς να σου δείχνει και την εκτέλεση πιθανών συναρτήσεων που βρίσκει στον κώδικα.Πάτα ένα από τα δυο παραπάνω options (καλύτερα το F11) μέχρι να φτάσεις στην SendEmail. Εκεί επέλεξε το κείμενο ButtonSend.Text στον vb κώδικα σου και δεξί click.Βρες την επιλογή Αdd Watch.Kαι δες την τιμή που έχει (Value) όπως θα δεις δεν είναι σωστό είναι το " Send" και όχι "Send" για το οποίο ελέγχεις εσύ.Διόρθωσε το παραπάνω και ξαναδοκίμασε. 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα