PDA

View Full Version : سوال: مشکل در انتخاب صحیح Namespace در یک Class Library (همراه عکس)



gilsoft
شنبه 20 آبان 1391, 05:22 صبح
سلام به دوستان خوبم

ابتدا به عکس زیر توجه فرمایید :

94705

من میخوام تابع Delay به زیر مجموعه ی gsLib.gsToolkit برود (با فلش سبز نشان داده شده) اما نمیتونم این کار رو انجام بدم :متفکر:
نمیخوام این تابع در زیر مجموعه ی (با فلش آبی نشان داده شده) gsLib.gsToolkit.Common باشه ! :ناراحت:

اینم نمونه ی کد :


Imports VB = Microsoft.VisualBasic

Namespace gsToolkit
Public Class Common
Public Shared Function Delay(ByVal Second As Double) As Boolean
Dim Finish As Double = Second + VB.DateAndTime.Timer
Do While VB.DateAndTime.Timer < Finish : Loop
Delay = True
End Function 'Delay()
End Class
End Namespace

در واقع میخوام وقتی Reference زیر رو Import می کنم .. یه سری توابع عمومی قابل دسترس باشند

Imports gsLib.gsToolkit

کل پروِژه هم براتون میزارم

خواهشا کمکم کنید ...

فرید نجفلو
شنبه 20 آبان 1391, 16:40 عصر
دوست عزیز شما نمی تونید یه تابع رو داخل یه فضای نامی تعریف کنید
ولی می تونید یه جورایی دورش بزند
شما تابع رو به این صورت در یه ماژول بنویسید (یادتون باشه Shared تو ماژول کاربرد نداره)

Imports VB = Microsoft.VisualBasic
Namespace gsToolkit
Module gsMdl
Public Function Delay(ByVal Second As Double) As Boolean
Dim Finish As Double = Second + VB.DateAndTime.Timer
Do While VB.DateAndTime.Timer < Finish : Loop
Delay = True
End Function 'Delay()

End Module
End Namespace


حالا می تونید تو کدتون بنویسید:

gsLib.gsToolkit.Delay(10)

راستی یه نکته واسه این تابع ، به نظرتون کد زیر بهتر نیست هم کدش کمه هم به CPU فشار نمیاره:متفکر::

Public Function Delay(ByVal Second As Double) As Boolean
Threading.Thread.Sleep(Second * 1000)
Return True
End Function 'Delay()

gilsoft
شنبه 20 آبان 1391, 17:18 عصر
راستی یه نکته واسه این تابع ، به نظرتون کد زیر بهتر نیست هم کدش کمه هم به CPU فشار نمیاره:متفکر::

Public Function Delay(ByVal Second As Double) As Boolean
Threading.Thread.Sleep(Second * 1000)
Return True
End Function 'Delay()


سلام خدمت دوست خوبم : جناب آقای نجفلو
اول از همه سپاسگزارم از جوابی که دادید .. چون برام خیلی مهمه !

این ماجول به شکل زیر باید تکمیل بشه و من نمیدونم که بجای KeyPress چی باید بزارم
یعنی میخوام در بعضی حالات .. کاربر بازدن کلید Esc ( یا هرکلیدی که برنامه نویس معرفی کنه ) بتونه از Delay خارج بشه !

Imports VB = Microsoft.VisualBasic

Namespace gsToolkit
Public Enum eYesNo
Yes
No
End Enum

Public Class Common

Public Shared Function Delay(ByVal Second As Double, Optional ByVal EscToCancel As eYesNo = eYesNo.No) As Boolean
Dim Finish As Double = Second + VB.DateAndTime.Timer
Do While VB.DateAndTime.Timer < Finish
If EscToCancel = eYesNo.Yes Then
If KeyPress = ChrW(27) Then Exit Function
End If
Loop
Delay = True
End Function 'Delay()
End Class
End Namespace

در واقع نمیدونم بجای سطرهای 14 تا 16 چی باید بنویسم ! :ناراحت:
بخاطر همین موضوع ترجیح دادم که این فانکشن رو توی کلاس بزارم !

اینو میدونم که این بخاطر عدم تسلط کافی من به برنامه نویسی شئی گراست ! :ناراحت:

ممنون میشم اگه تو این زمینه هم منو راهنمایی بفرمایید .... :لبخندساده: