1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

نا گفته هاي كاربردي و جالب در Visual Basic.Net

شروع موضوع توسط minaaa ‏14/12/10 در انجمن .Net

  1. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    نخ ها :(Thearding) یکی از بهترین امکان برای استفاده بهینه منابع هست با این حال خیلی مورد بی توجهی قرار می گیره.
    مثلاً با این موضوع بر خرده باشید که وقتی حلقه ای بینهایت یا طولانی داریم و نیاز هست که در هنگام پردازش حلقه به رویداد های دیگه رسیده مورد تقاضای کاربر جواب بده در این حالت یا شما باید از دستور Doevents استفاده کنید که اصلاً توصیه نمی شه چون اجرای این دستور حدوداً یک میلی ثانیه تاخیر ایجاد می کنه و اگر حلقه من 10000 هزار بار تکرار بشه در برنامه من به صورت ناخواسته 10 ثانیه وقت تلف می شه (برای پاسخ به رویداد های دیگر )
    برای این منظور از نخ ها استفاده که کارایی برنامه شما رو به صورت چشم گیری افزایش می دهد
    من یک حلقه بزرگ رو مثال می زنم ک من در اینجا قصد دارم یک جستجو در یک مسیر خاص در درایوم رو به شما نشون بدم لازم به ذکر هست که این برنامه تمام مسیر یعنی تمام زیر شاخه ها رو هم در بر می گیره:



    این هم یک مثال ساده تا بهتر متوجه بشیم:

    کد PHP:
    PublicEnum StatC
    vbStop
    = 0
    vbRun
    = 1
    vbPause
    = 2
    EndEnum
    Dim Stat_1
    As StatC


    Dim
    Tr
    As Threading.Thread
    برای آغاز کار
    Public

    Sub Start()
    If
    Stat = StatC.vbStop Then
    Me
    .Tr = New Thread(New ThreadStart(AddressOf Me.Roshan))
    Tr.Priority =ThreadPriority.Highest
    Tr
    .Start()
    EndIf
    End sub
    برای ادامه وقتی که Pause استفاده شود
    Public Sub Resume_()
    IfNot IsNothing(Tr) Then Tr.Resume()
    Stat_1 = StatC.vbPause
    EndSub
    برای توقف موقت
    PublicSub Pause
    ()
    IfNot IsNothing(Tr) Then Tr.Suspend()
    Stat_1 = StatC.vbPause
    EndSub
    برای از بین بردن
    Public Sub _Stop()
    IfNot IsNothing(Tr) Then Tr.Abort()
    Stat_1 = StatC.vbStop
    EndSub
    پردازه بی نهایت
    PrivateSub Roshan
    ()
    While (
    1)
    ....
    دستورات شما
    End
    While
    EndSub









    قسمتی که به رنگ قرمز در آمده است این قسمت اهمیت این نخ را برای سیستم عامل شرح می دهد و اولویت این نخ بر اساس این متد تغییر می کند پس از آن به درستی استفاده کنید.​
     
  2. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    این کد زمان روشن بودن کامپیوتر رو بر حسب میلی ثانیه بر میگرداند. این قابلیت میتونه خیلی کارامد باشه در ضمن چون در یک متغیر 32 بیتی ذخیره میشود پس از 24 روز مقدار آن صفر میشود.
    کد:
    کد:
    System.Environment.TickCount

    __________________
     
  3. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    این هم ایجاد یک شی در زمان اجرا و انتصاب رویداد کلید در زمان اجرا به آن شی :

    کد:

    کد:
    Dim Bt As New ButtonPrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.LoadBt.Parent = MeBt.Location = New Point(Me.Width / 2, Me.Height / 2)Bt.Text = "Ok"AddHandler Bt.Click, AddressOf BtClickEndSubPrivateSub BtClick(ByVal sender As Object, ByVal e As EventArgs)MsgBox("Hello ...")EndSub​

    همه رویداد همه اشیا از همین سبک قابل هدایت هستند.
     
  4. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    دوست عزیزمان ساختن باتون در زمان اجرا را گفتند ، من هم Move کردن این باتون در زمان اجرا رو میگم. البته این کار بدون استفاده از Api ها هست


    کد:
    Dim mouse_offset As Point Private Sub Button1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseDown mouse_offset = New Point(-e.X, -e.Y) End Sub Private Sub Button1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseMove If e.Button = Windows.Forms.MouseButtons.Left Then Dim mousePos As Point = sender.MousePosition mousePos.Offset(mouse_offset.X - Button1.Height, mouse_offset.Y - Button1.Width) sender.Location = mousePos End If End Sub

    __________________
     
  5. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    این دفعه شما رو با Code Snippet ها اشنا میکنم.
    Code Snippet ها کد های کوچک شده ایی هستند که باعث تسهیل در کد نوشتن میشوند. برای اینکه با این کد ها آشنا بشین در محیط کد نویسی ویژوال استادیو کلیک راست کنید و گزینه ی Insert Snippet ر وانتخاب کنید . ملاحضه میکنین که لیستی از این کد ها رو براتون میاره
    برای نمونه ایتم Windows Operating System\Find the current user رو انتخاب بکنین
    ملاحضه میکنین که متغیری تعریف میکنه که نام کاربر جاری در آن ذخیره شده.
    این کدها کار برنامه نویس رو خیلی راحت تر میکنه. (به زودی نحوه ی ساخت این کد ها رو کامل بهتون میگم.). یکی از تفاوت هایی که ویژوال 2005 با نسخه های قبلی داره همین Code Snippet هاست.
    مثلا در دات نت حلقه ی For یک CodeSnippet هست.
    برای اینکه بتونید سریع تر به ساختار این کد ها دسترسی داشته باشین پس از نوشتن اسم انها(مثلا For) کلید TAB رو بزنید ملاحضه میکنین که چه اتفاقی صورت میگیره