نمایش نتایج 1 تا 36 از 36

نام تاپیک: آموزش جامع Threading و مباحث مربوطه مثل synchronization

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #3

    Play و Pause کردن یک Thread دقیقا شبیه یک فیلم

    گاهی در برنامه نیاز داریم که یک پردازش را در وسط انجام کار متوقف(Pause) کنیم و بعدا ادامه آن را اجرا کنیم.
    مثلا:

    • · در آنتی ویروس ها
    • · برنامه های فشرده سازی فایل
    • · برنامه کپی فایل
    • · نرم افزار Image گرفتن از Cd و Dvd
    • · نرم افزارهای مبدل(هر نوع فایل به نوع دیگر)

    و بطور کلی خیلی از کارها زمانبر هستند و همچنین پردازشگر را به شدت مشغول می کنند.در این موارد بهتر است که امکان توقف موقت پردازش را برای کاربر فراهم کنیم.
    حال نحوه کار را با ذکر یک مثال شرح می دهیم:
    لوازم مورد نیاز:

    • · متد suspend(برای توقف Thread)
    • · متد Resume (برای ادامه اجرای یک Thread متوقف شده)
    • · خاصیت Threadstate(برای تشخیص وضعیت Thread مورد نظر)

    برنامه مورد نظر: برنامه تولید اطلاعات متنی و ذخیره در فایل با قابلیت Pause و Resume
    تصویری از محیط برنامه:


    سورس برنامه:(سورس کامل برنامه ضمیمه شده است.)

    Public Class Form1
    Dim t As Threading.Thread

    Private Sub Btnstart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnstart.Click
    Control.CheckForIllegalCrossThreadCalls = False
    t = New Threading.Thread(AddressOf Create_big_file)
    t.IsBackground = True
    t.Start(txtfilename.Text.Trim)
    btnstart.Enabled = False
    btnpause.Enabled = True
    btnabort.Enabled = True
    End Sub

    Private Sub Create_big_file(ByVal FileName As String)
    Dim fs As New IO.StreamWriter(FileName)
    Dim i As Decimal
    While True
    fs.WriteLine("www.Barnamenevis.org " + "Line: " + i.ToString)
    fs.Flush() 'save this line
    lblstatus.Text = "Line: " + i.ToString
    i += 1
    End While
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    Dim cdl As New SaveFileDialog
    cdl.Filter = "Text Files|*.txt"
    If cdl.ShowDialog = Windows.Forms.DialogResult.OK Then
    txtfilename.Text = cdl.FileName
    End If
    End Sub

    Private Sub btnpause_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnpause.Click
    t.Suspend()
    btnpause.Enabled = False
    btnresume.Enabled = True
    End Sub

    Private Sub btnresume_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnresume.Click
    t.Resume()
    btnresume.Enabled = False
    btnpause.Enabled = True
    End Sub

    Private Sub btnabort_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnabort.Click
    If t.ThreadState = Threading.ThreadState.Background + Threading.ThreadState.Suspended Then
    MsgBox("هنگامی که یک نخ در حالت توقف است نمی توان آن را نابود کرد", MsgBoxStyle.Exclamation)
    ElseIf t.ThreadState = Threading.ThreadState.Background + Threading.ThreadState.Running Then
    t.Abort()
    MsgBox("Thread Aborted By User!", MsgBoxStyle.Critical) : End
    End If

    End Sub

    End Class


    مزایای تولید این برنامه با Thread در مقایسه با مدل بدون Thread:

    • · قابلیت Pause و Resume برنامه توسط کاربر
    • · قفل نشدن فرم برنامه هنگام پردازش
    • · سرعت بالاتر نسبت به حالت تک نخی
    • درس بعدی: همزمان سازی Thread ها
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله محسن شامحمدی : چهارشنبه 28 آبان 1393 در 13:13 عصر دلیل: عکس

تاپیک های مشابه

  1. آموزش جامع کوئری ها
    نوشته شده توسط sajjad_kochekian در بخش Access
    پاسخ: 0
    آخرین پست: یک شنبه 04 بهمن 1388, 23:04 عصر
  2. دانلود 32 آموزش جامع در قالب یک فایل PDF
    نوشته شده توسط mmssoft در بخش برنامه نویسی در 6 VB
    پاسخ: 27
    آخرین پست: یک شنبه 21 تیر 1388, 23:09 عصر
  3. آموزش جامع دلفی
    نوشته شده توسط Delphi Skyline در بخش مقالات مرتبط با Delphi/Win32
    پاسخ: 3
    آخرین پست: شنبه 16 تیر 1386, 21:33 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •