(13-06-16, 03:20 PM)الوادي كتب : يا محمد،
جرب هذه الطريقة يمكن تناسبك، بسبب عدم امكانية معرفة النسبة المنجزة للعملية استخدمت النمط ProgressBarStyle.Marquee
PHP كود :
Public Class Form1
Dim thr As Threading.Thread
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
CheckForIllegalCrossThreadCalls = False
End Sub
' إبدأ الارسال '
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
thr = New Threading.Thread(AddressOf task)
thr.IsBackground = True
thr.Start()
ProgressBar1.Style = ProgressBarStyle.Marquee
End Sub
' إلغاء الارسال '
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
If Not IsNothing(thr) Then
thr.Abort()
ProgressBar1.Style = ProgressBarStyle.Blocks
End If
End Sub
Sub task()
Try
Dim mail As New MailMessage
mail.Subject = "email"
mail.To.Add(TextBox2.Text)
mail.From = New MailAddress(TextBox2.Text)
mail.Body = "good"
Dim smtp As New SmtpClient("smtp.mail.yahoo.com")
smtp.EnableSsl = True
smtp.Credentials = New System.Net.NetworkCredential(TextBox2.Text, TextBox3.Text)
smtp.Port = "587"
smtp.Send(mail)
MsgBox("mail sent")
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
End Class
الطريقة جميلة جدا والكود ظبط معي ولكن اريد شيء اخر
لو استخدمت 2 فورم
الاول فية شاشة الايميل التيكست والبوتن و
PHP كود :
Sub task()
Try
Dim mail As New MailMessage
mail.Subject = "email"
mail.To.Add(TextBox2.Text)
mail.From = New MailAddress(TextBox2.Text)
mail.Body = "good"
Dim smtp As New SmtpClient("smtp.mail.yahoo.com")
smtp.EnableSsl = True
smtp.Credentials = New System.Net.NetworkCredential(TextBox2.Text, TextBox1.Text)
smtp.Port = "587"
smtp.Send(mail)
MsgBox("mail sent")
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
form2.ProgressBar1.Style = ProgressBarStyle.Blocks
End Sub
الفورم الثاني اليروجريس حق الثريد
ونقلت الثريد للفورم الثاني بالكود دة
Dim thr As Threading.Thread
Private Sub FORM_Load(sender As Object, e As EventArgs) Handles MyBase.Load
On Error Resume Next
CheckForIllegalCrossThreadCalls = False
thr = New Threading.Thread(AddressOf Form1.task)
thr.IsBackground = True
thr.Start()
ProgressBar1.Style = ProgressBarStyle.Marquee
End Sub
Private Sub FORM_Shown(sender As Object, e As EventArgs) Handles Me.Shown
System.Threading.Thread.Sleep(20000)
If ProgressBar1.Style = ProgressBarStyle.Blocks Then
Me.Close()
Else
System.Threading.Thread.Sleep(20000)
End If
End Sub
وعملت كود اغلاق للثريد بالطريقة دية
ارسل الايميل ولم يوقف البروجريس بار والفورم
الشق الثاني هل استخد م الثريد هذا باي دالة تجمد الفورم بنفس الطريقة
وجزاك اللة الف خير عني وعن غيري
(13-06-16, 03:08 PM)hitman48 كتب : ان كنت تريد ارسال من ايميل يجب تعمل دخول اولا login ثم تبعث الايميل
عملتلك مثال شوف الي يناسبك
كود :
Imports System.Net.Mail
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Timer1.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
ProgressBar1.Increment(2)
Label1.Text = ProgressBar1.Value & "%"
If ProgressBar1.Value = 200 Then
Try
Dim SmtpServer As New SmtpClient()
Dim mail As New MailMessage()
SmtpServer.Credentials = New _
Net.NetworkCredential("amineip0123@gmail.com", "kl01234560")
SmtpServer.Port = 587
SmtpServer.EnableSsl = True
SmtpServer.Host = "smtp.gmail.com"
mail = New MailMessage()
mail.From = New MailAddress("amineip0123@gmail.com")
mail.To.Add("nevergiveupno20015@gmail.com")
mail.Subject = "Test Mail"
mail.Body = "This is for testing SMTP mail from GMAIL"
SmtpServer.Send(mail)
MsgBox("mail send")
Catch ex As Exception
MsgBox(ex.ToString)
End Try
Timer1.Stop()
ProgressBar1.Value = 1
End If
End Sub
End Class
اشكرك اخي الكريم علي الرد ولكن الثريد افضل من التايمر