عندي برنامج ارسل من خلالة ايميل الي الياهو يحاخذ وقت في الارسال عند تحريك الماوس او الضغط علي الفورم يتجمد
كلة دة طبيعي
اريد كود او طريقة لاظهار شريط تقدم بروجريس اثناء الارسال او كود ثابت استخدمة لاي دالة تحدث توقف للفورم حتي انتهاء التنفيذ
شاشة انتظار حتي الخروج من الكود
دة كود ارسال الايميل الي الياهو شغال تمام وكل شيء
كود :
Dim mail As New MailMessage
Try
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
اريد شاشة انتظار ومنع الفورم من التعليق او التهنيج نفس الموضوع دة ويكون كود ثابت لاي عملية تاخذ وقت
رابط ما اريد
ان كنت تريد ارسال من ايميل يجب تعمل دخول اولا 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
يا محمد،
جرب هذه الطريقة يمكن تناسبك، بسبب عدم امكانية معرفة النسبة المنجزة للعملية استخدمت النمط 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
ProgressBar1.Style = ProgressBarStyle.Blocks
End Sub
End Class
(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
اشكرك اخي الكريم علي الرد ولكن الثريد افضل من التايمر
يا محمد،
يللي فهمته انك تريد Form2 تكون شاشة شريط الانظار، على هذا يكون الكود
Form1
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()
Form2.ShowDialog()
If Not IsNothing(thr) Then thr.Abort()
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
Me.Invoke(New FormCloseDelegate(AddressOf Form2Close))
End Sub
Delegate Sub FormCloseDelegate()
Sub Form2Close()
Form2.Close()
End Sub
End Class
Form2 وفيه زر لإلغاء العملية
PHP كود :
Public Class Form2
Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
ProgressBar1.Style = ProgressBarStyle.Marquee
End Sub
' إلغاء الارسال '
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Me.Close()
End Sub
End Class
أما الشق الثاني بخصوص استخدام الثريد،
هو أساساً مهمة مستقلة (أكيد سمعت عن تعدد المهام)
ويستخدم ليقوم بعملية معينة (في الخلفية) بينما يستمر العمل بالبرنامج (بدون تجميد)،
لكن لازم تعرف طريقة عمله بشكل صحيح.
(13-06-16, 05:56 PM)الوادي كتب : [ -> ]يا محمد،
يللي فهمته انك تريد Form2 تكون شاشة شريط الانظار، على هذا يكون الكود
Form1
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()
Form2.ShowDialog()
If Not IsNothing(thr) Then thr.Abort()
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
Me.Invoke(New FormCloseDelegate(AddressOf Form2Close))
End Sub
Delegate Sub FormCloseDelegate()
Sub Form2Close()
Form2.Close()
End Sub
End Class
Form2 وفيه زر لإلغاء العملية
PHP كود :
Public Class Form2
Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
ProgressBar1.Style = ProgressBarStyle.Marquee
End Sub
' إلغاء الارسال '
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Me.Close()
End Sub
End Class
أما الشق الثاني بخصوص استخدام الثريد،
هو أساساً مهمة مستقلة (أكيد سمعت عن تعدد المهام)
ويستخدم ليقوم بعملية معينة (في الخلفية) بينما يستمر العمل بالبرنامج (بدون تجميد)،
لكن لازم تعرف طريقة عمله بشكل صحيح.
الف شكر فعلا هذا ما اريد بالضبط