PDA

View Full Version : ایجاد Event یک ثانیه ی



yekta64
چهارشنبه 28 اردیبهشت 1390, 15:28 عصر
سلام دوستان

من یه قطعه کد درام که تو اون کاربر با فشردن یه دکمه یه متن رو می بینه و به فاصله در هم رویداد متن عوض میشه حالا من می خوام وقتی کاربر دکمه رو فشرد اول متن رو ببینه بعد از گذشت یه یا دو ثانیه متن عوض بشه اخه اگه اینطور نباشه کاربر متن اولیه رو نمی بینه من به یه event نیاز دارم احتمالا باید از تایمر استفاده کنم ممنون میشم راهنمایی کنید
مرسی

alimanam
چهارشنبه 28 اردیبهشت 1390, 16:38 عصر
با سلام

به جای تایمر میتونی از Thead استفاده کنی البته که کنترل بیشتری در اختیارت میزاره . در کد زیر که واستون نوشتم میتونین مشکلتون رو حل کنین .

Public Class Form1
''' <summary>
''' Coding By : Ali Dakhilzadeh
''' For Develop the source code visit this page [ http://barnamenevis.org/showthread.php?287737 ]
''' Enjoy It !
''' </summary>
''' <param name="word"></param>
''' <remarks></remarks>
Private Delegate Sub UpdateMyNameDelegate(ByVal word As String)
Private QueueProcessorThread As Threading.Thread
Private QueueProcessorCancel As Boolean
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
StopQueueProcessor()
End Sub

Private Sub StartQueueProcessor()
butStart.Enabled = False
butStop.Enabled = True
QueueProcessorCancel = False
QueueProcessorThread = New Threading.Thread(AddressOf QueueProcessor)
QueueProcessorThread.IsBackground = True
QueueProcessorThread.Start()
End Sub

Private Sub StopQueueProcessor()
If QueueProcessorThread IsNot Nothing AndAlso QueueProcessorThread.IsAlive Then
QueueProcessorCancel = True
QueueProcessorThread.Interrupt()
If Not QueueProcessorThread.Join(1000) Then
QueueProcessorThread.Abort()
End If
End If
butStart.Enabled = True
butStop.Enabled = False
End Sub

Private Sub QueueProcessor()
Try
Do
Try

Invoke(New UpdateMyNameDelegate(AddressOf UpdateMyName), New Object() {"My "})
Threading.Thread.Sleep(1000)
Invoke(New UpdateMyNameDelegate(AddressOf UpdateMyName), New Object() {"Name "})
Threading.Thread.Sleep(1000)
Invoke(New UpdateMyNameDelegate(AddressOf UpdateMyName), New Object() {"Is "})
Threading.Thread.Sleep(1000)
Invoke(New UpdateMyNameDelegate(AddressOf UpdateMyName), New Object() {"Ali "})
Threading.Thread.Sleep(1000)
Invoke(New UpdateMyNameDelegate(AddressOf UpdateMyName), New Object() {"Dakhilzadeh "})
Threading.Thread.Sleep(1000)
Invoke(New UpdateMyNameDelegate(AddressOf UpdateMyName), New Object() {Nothing})
Catch ex As Threading.ThreadInterruptedException
End Try
Loop Until QueueProcessorCancel
Catch ex As Threading.ThreadAbortException
MsgBox("Queue Processor Aborted.")
Catch ex As Exception
MsgBox(String.Format("An unhandled error occured: {0} ", ex.Message))
End Try
End Sub

Private Sub UpdateMyName(ByVal word As String)
If Not word Is Nothing Then
Label1.Text &= word
Else
Label1.Text = ""
End If
End Sub

Private Sub butStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butStop.Click
StopQueueProcessor()
End Sub

Private Sub butStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butStart.Click
StartQueueProcessor()
End Sub

End Class


موفق باشید ./