خوب ببینید به هر قطعه کدی که بطور مستقل اجرا میشود ریسمان(Thread) گفته میشود مثل هر برنامه ای که شما مینویسید یا برنامه هایی که در کامپیوتر ظاهرا هم زمان اجرا میشوند.
کامپیوتر هر ریسمان را در یک برش زمانی(Slice) مستقل اجرا میکند و به همین دلیل است که به نطر میرسد بطور همزمان ایجاد میشوند.
خوب برای ایجاد یک ریسمان جدید شما باید یک شیئ مستقل ایجاد کنید برای این منظور نیاز به یک کلاس داریم که کدهای مورد نظر رو در آن بنویسیم
خوب حالا کدها رو نوشته اید و برنامه رو اجرا کردید ولی آیا نباید از پایان عملیات ریسمان اطلاع داشته باشید؟ خوب برای این منظور باید یک Event به کلاس خود اضافه کنید که پایان عملیات کلاس را به شما اعلام کند
همانطور که در مثال بالا میبینید:
RaiseEvent Done(intTotal)
که این Event پایان شمارش رو با اعلام عدد آخر به برنامه اعلام میکنه.
خوب حالا این ریسمان چطور شروع به کار میکنه؟ برای این کار شما باید یک شیئ جدید از این کلاس در برنامه تون ایجاد کنید و سپس در هنگام ایجاد ریسمان (شیئ Thread) جدید ادرس متد مورد نظر از کلاسی که نوشته بودید رو به سازنده کلاس Thread پاس کنید
البته اگر متدهایی که به سازنده کلاس ریسمان پاس میشوند دارای آرگومتن باشند نباید این آرگومانها رو قید کرد
دستورات زیر در مثال بالا:
Dim CounterObj as new Counter
Thread1 = New System.Threading.Thread(AddressOf CounterObj.Count)
سپس مقادیر مورد نیاز شیئ رو ست میکنیم
سپس روال رویداد شیئ رو مینویسیم و فعال میکنیم(همانگونه که برای کنترلهای داینامیک انجام میدادیم) و در آخر ریسمان رو اجرا میکنیم:
TextBox2.text=""
CounterObj.Maximum=Val(TextBox1.text)
lAddHandler CounterObj.Done, AddressOf DoneEvent
Thread1.start()
End Sub
Sub DoneEvent(Byval Number as Integer)
TextBox2.Text=Number
End Sub
خوب کار تمام شد

خوب حالا ممکن است به هر دلیل بخواهید ریسمان رو برای مدتی در حین کار به حالت تعلیق در بیاورید خوب برای این کار از متد Suspend کلاس Thread استفاده میکنیم:
Thread1.suspend()
و برای ادامه کار از متد Resume:
Thread1.Resume()
خوب برای توقف ریسمان هم از Abourt استفاده میکنیم
برای تعلیق موقت ریسمان و شروع خودکار اون هم از متد Sleep استفاده میسه که ریسمان رو بر حسب میلی ثانیه به حالت تعلیق درمیاره مثلا برای یک ثانیه باید عدد 1000 رو وارد کنید.
خوب ریسمان یک سری مسائل دیگه هم داره از جمله Priority یا تعیین اولویت ریسمان نسبت به ریسمانهای دیگه یا خاصیت ThreadState برای تشخیص حالت ریسمان که مقداری از نوع شمارشی بر میگرداند و دیگری همزمانی ریسمانها(Synchronize) که از حوصله تایپ کردن من فعلا خارج شد فقط تا همین حد بگم که یکی دستور SyncLock هست و دیگری متد Join
خوب موفق باشید
