PDA

View Full Version : سوال: تاخیر در اجرای کدهای بعدی



milad.biroonvand
چهارشنبه 10 فروردین 1390, 22:33 عصر
<!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>FA</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:DontVertAlignCellWithSp/> <w:DontBreakConstrainedForcedTables/> <w:DontVertAlignInTxbx/> <w:Word11KerningPairs/> <w:CachedColBalance/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="--"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin-top:0cm; mso-para-margin-right:0cm; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;} </style> <![endif]--> من یک تابع در برنامه دارم ، این تابعم در یک شرایط خاص ، مقدار true بر می گردونه ، این تابع چند ثانیه ، طول میشکه تا true بشه و من می خوام تا این تابع true نشده کدهای بعد از اون اجرا نشن . از یک حلقه ی do استفاده کردم ولی اینکار باعث می شد تا برنامه هنگ کنه . فک کنم باید از یه نخ برای اینکار استفاده کنم ، خوشحال می شم نظراتتون رو بدونم .
نکته ) می دونم که با تایمر میشه ، ولی کدهای من نباید تو رویداد trick تایمر باشن . اگر راهی وجود داشته باشه که بعد از مقداری تاخیر (منطقی ) دوباره اجرا بشن ، عالی میشه .

shadi khanum
چهارشنبه 10 فروردین 1390, 23:56 عصر
با این دستور میتونی 1 ثانیه تاخیر ایجاد کنی
Threading.Thread.Sleep(1000)

ricky22
پنج شنبه 11 فروردین 1390, 00:00 صبح
سلام.
می تونید از شی backgroundworker استفاده کنید :
Private Sub button1_Click(sender As Object, e As EventArgs)
Dim bw As New BackgroundWorker()

' this allows our worker to report progress during work
bw.WorkerReportsProgress = True

' what to do in the background thread
bw.DoWork += New DoWorkEventHandler(Function(o As Object, args As DoWorkEventArgs) Do
Dim b As BackgroundWorker = TryCast(o, BackgroundWorker)

' do some simple processing for 10 seconds
For i As Integer = 1 To 10
' report the progress in percent
b.ReportProgress(i * 10)
Thread.Sleep(1000)

Next
End Function)

' what to do when progress changed (update the progress bar for example)
bw.ProgressChanged += New ProgressChangedEventHandler(Function(o As Object, args As ProgressChangedEventArgs) Do
label1.Text = String.Format("{0}% Completed", args.ProgressPercentage)
End Function)

' what to do when worker completes its task (notify the user)
bw.RunWorkerCompleted += New RunWorkerCompletedEventHandler(Function(o As Object, args As RunWorkerCompletedEventArgs) Do
label1.Text = "Finished!"
End Function)

bw.RunWorkerAsync()
End Sub

ricky22
پنج شنبه 11 فروردین 1390, 00:01 صبح
با این دستور میتونی 1 ثانیه تاخیر ایجاد کنی
Threading.Thread.Sleep(1000)
سلام.
خب از کجا باید معلوم کرد اجرای تابع نیاز به چند ثانیه تاخیر داره؟

milad.biroonvand
پنج شنبه 11 فروردین 1390, 09:28 صبح
با این دستور میتونی 1 ثانیه تاخیر ایجاد کنی
Threading.Thread.Sleep(1000)

سلام

مر30 از جوابت ، از اسلیپ استفاده کردم ، ولی باعث می شد تا کدهای قبلی و نخ های دیگه هم بخوابند و به مشکل بر می خوردم .

بازم تشکر می کنم .

milad.biroonvand
پنج شنبه 11 فروردین 1390, 09:31 صبح
سلام.
خب از کجا باید معلوم کرد اجرای تابع نیاز به چند ثانیه تاخیر داره؟

مر30 بابت جوابت ، تابع معلوم نیست که چند ثانیه داره ( شما می تونید فک کنید که 3 ثانیه نیاز داره . )
تابع بعد از یک مدت مثلا 3 ثانیه یک مقدار true می فرسته به خروجی ولی تا true نداده داره یک کار رو انجام میده .

milad.biroonvand
پنج شنبه 11 فروردین 1390, 09:33 صبح
سلام.
می تونید از شی backgroundworker استفاده کنید :
Private Sub button1_Click(sender As Object, e As EventArgs)
Dim bw As New BackgroundWorker()

' this allows our worker to report progress during work
bw.WorkerReportsProgress = True

' what to do in the background thread
bw.DoWork += New DoWorkEventHandler(Function(o As Object, args As DoWorkEventArgs) Do
Dim b As BackgroundWorker = TryCast(o, BackgroundWorker)

' do some simple processing for 10 seconds
For i As Integer = 1 To 10
' report the progress in percent
b.ReportProgress(i * 10)
Thread.Sleep(1000)

Next
End Function)

' what to do when progress changed (update the progress bar for example)
bw.ProgressChanged += New ProgressChangedEventHandler(Function(o As Object, args As ProgressChangedEventArgs) Do
label1.Text = String.Format("{0}% Completed", args.ProgressPercentage)
End Function)

' what to do when worker completes its task (notify the user)
bw.RunWorkerCompleted += New RunWorkerCompletedEventHandler(Function(o As Object, args As RunWorkerCompletedEventArgs) Do
label1.Text = "Finished!"
End Function)

bw.RunWorkerAsync()
End Sub


راستی من از متد اسلیپ استفده رکدم ولی باعث می شد تا ، کدهای قبلیو یعنی خود تابع رو از کار بندازه . ولی مثل کد تو ننوشتم ، حالا امتحان می کنم ، ببینم با کد تو چطوره و خبرت می کنم .
بازم مر30

shadi khanum
پنج شنبه 11 فروردین 1390, 13:01 عصر
اون تابع که قرار بره یه چیزی رو چک کنه رو بده به یه thread دیگه و thread برنامه رو sleep کن . اینجوری دیگه با Sleep کردن thread برنامه خود تابع متوقف نمیشه و اجرا میشه
موفق باشی

milad.biroonvand
پنج شنبه 11 فروردین 1390, 14:32 عصر
اون تابع که قرار بره یه چیزی رو چک کنه رو بده به یه thread دیگه و thread برنامه رو sleep کن . اینجوری دیگه با Sleep کردن thread برنامه خود تابع متوقف نمیشه و اجرا میشه
موفق باشی


راه حلت بنظرم جالب باشه ، بگو به چه صورت اینکار رو کنم ، فک کنم مثلا کد دوستمون باشه که در بالا گفت ؟

shadi khanum
پنج شنبه 11 فروردین 1390, 17:11 عصر
قبل از اون یه چیزی، شما تو برنامتون از یه thread استفاده کردی یا برنامتون multiThread؟ چون اگه از یه thread استفاده کردی که نباید وقتی برنامه میره سراغ یه تابع ، کدهای بعدیش اجرا بشه!

milad.biroonvand
جمعه 12 فروردین 1390, 00:14 صبح
راستی من از متد اسلیپ استفده رکدم ولی باعث می شد تا ، کدهای قبلیو یعنی خود تابع رو از کار بندازه . ولی مثل کد تو ننوشتم ، حالا امتحان می کنم ، ببینم با کد تو چطوره و خبرت می کنم .
بازم مر30

این کدی که نوشتی مطمئنی وبی دات نته ، آخه متد dowork اصلا کار نمی کنه

milad.biroonvand
جمعه 12 فروردین 1390, 00:15 صبح
اصلا از هیچ thread ای استفاده نکردم . از یه thread استفاده کردم ، باعث می شد که با اسلیپ کردن ، بقیه هم متوقف بشن .

shadi khanum
جمعه 12 فروردین 1390, 01:16 صبح
میدونم با sleep کردن بقیه هم متوقف میشن، میگم وقتی با یه thread برنامه مینویسی که وقتی برنامه میره سراغ یه تابع، تا جواب اون تابع نیاد برنامه سراغ کارای دیگه(کدهای نوشته شده زیر فراخوانی تابع) نمیره که! پس اصلا واسه چی میخواین برنامه متوقف بشه تا جواب تابع بیاد چون اصولا خودش متوقف میشه اصلا!

milad.biroonvand
جمعه 12 فروردین 1390, 05:32 صبح
میدونم با sleep کردن بقیه هم متوقف میشن، میگم وقتی با یه thread برنامه مینویسی که وقتی برنامه میره سراغ یه تابع، تا جواب اون تابع نیاد برنامه سراغ کارای دیگه(کدهای نوشته شده زیر فراخوانی تابع) نمیره که! پس اصلا واسه چی میخواین برنامه متوقف بشه تا جواب تابع بیاد چون اصولا خودش متوقف میشه اصلا!

تابع تو یه یوزر کنترل هست ، و یوزر کنترل خودش یه تایمر داره که طبق یه حالت خاص میاد و یه رویداد رو فرخوانی می کنه ، بعد از اون ، اون تابع یه مقدار true بر می گردونه ، پس مقدار بعد از چند ثانیه تاخیر true میشه و خود برنامه هم نمیره به طرف تابع .
مر30 که به این تاپیک جواب می دیدی.

shadi khanum
جمعه 12 فروردین 1390, 22:53 عصر
این Sample رو ببین شاید به دردت بخوره.
یه تابع توش هست که فرض میکنیم همون تابعی که شما میگی طول میکشه تا جوابش بیاد. اونو دادم به یه Thread دیگه بره اجرا کنه و thread جاری برنامه رو Sleep کردم

milad.biroonvand
جمعه 12 فروردین 1390, 23:44 عصر
این Sample رو ببین شاید به دردت بخوره.
یه تابع توش هست که فرض میکنیم همون تابعی که شما میگی طول میکشه تا جوابش بیاد. اونو دادم به یه Thread دیگه بره اجرا کنه و thread جاری برنامه رو Sleep کردم


سلام

این تشکر نوش جونت ، حالا تستش می کنم ، اگر جالب بود ، بازم ازت تشکر می کنم .
موفق باشی .

amirsadeghi
شنبه 13 فروردین 1390, 20:06 عصر
من هم تقریبا همچین مشکلی دارم
با thread تست کردم نتونستم جواب بگیرم!!!
تو تایمر هم گذاشتم روی سرعت بقیه برنامه تاثیر گذاشت!!

shadi khanum
شنبه 13 فروردین 1390, 23:14 عصر
من هم تقریبا همچین مشکلی دارم
با thread تست کردم نتونستم جواب بگیرم!!!
تو تایمر هم گذاشتم روی سرعت بقیه برنامه تاثیر گذاشت!!
یعنی چی جواب نگرفتم؟ مشکل چی بود؟

amirsadeghi
یک شنبه 14 فروردین 1390, 00:25 صبح
حقیقتش این که یه کلاس داریم که یه سری دیتا رو یه سخت افزار مانیتور میکنه
این کلاس تبدیل به dll شده و تو برنامه اصلی فقط تابعش صدا زده میشه و دیتا رو به ما میده
گاهی وقتا این دیتا با سرعت زیاد میاد و برنامه تا بیاد پردازش کنه دیتا جدید وارد شده و یه دیتا این وسط گم میشه!
این گم شدن باعث عملکرد نا مناسب سخت افزار میشه
الان تو بهترین حالت با تایمر جواب میده که بازم خوب نیست و lost داریم و البته بقیه برنامه هم کند تر میشه روند اجراییش

milad.biroonvand
یک شنبه 14 فروردین 1390, 17:25 عصر
حقیقتش این که یه کلاس داریم که یه سری دیتا رو یه سخت افزار مانیتور میکنه
این کلاس تبدیل به dll شده و تو برنامه اصلی فقط تابعش صدا زده میشه و دیتا رو به ما میده
گاهی وقتا این دیتا با سرعت زیاد میاد و برنامه تا بیاد پردازش کنه دیتا جدید وارد شده و یه دیتا این وسط گم میشه!
این گم شدن باعث عملکرد نا مناسب سخت افزار میشه
الان تو بهترین حالت با تایمر جواب میده که بازم خوب نیست و lost داریم و البته بقیه برنامه هم کند تر میشه روند اجراییش


من فعلا موقتا از تایمر استفاده کردم ، ولی تایمر رو همیشه فعال نمی زارم ، یعنی فقط موقعیکه نیاز دارم ، اجراش می کنم ، یعنی طبق اون حالت خاص یه تابع رو فراخوانی می کنم ، و اون تابع در صوتیکه شرایط دیگه ای بوجود بیاد دوباره خود تابع رو فراخوانی می کنه ولی یه متغیر سراسری دارم که مقدا داخل اون رو تغییر میدم . زیاد تو سرعت برنامه مشکل پیش نمیاد ولی برا کار تو تایمر اصلا خوب نیست ، ممکنه ویندوز سرویس بدرد تو بخوره . نه نخ . حالا هنوزم تحقیق کن .

amirsadeghi
یک شنبه 14 فروردین 1390, 20:25 عصر
منظورت از ویندوز سرویس همون توابع سیستمی (api) هست؟

shadi khanum
یک شنبه 14 فروردین 1390, 21:09 عصر
حقیقتش این که یه کلاس داریم که یه سری دیتا رو یه سخت افزار مانیتور میکنه
این کلاس تبدیل به dll شده و تو برنامه اصلی فقط تابعش صدا زده میشه و دیتا رو به ما میده
گاهی وقتا این دیتا با سرعت زیاد میاد و برنامه تا بیاد پردازش کنه دیتا جدید وارد شده و یه دیتا این وسط گم میشه!
این گم شدن باعث عملکرد نا مناسب سخت افزار میشه
الان تو بهترین حالت با تایمر جواب میده که بازم خوب نیست و lost داریم و البته بقیه برنامه هم کند تر میشه روند اجراییش

شما فک نکنم thread به دردتون بخورهريال یه جور buffering باید داشته باشید یا به قول دوستمون یه سرویس واسه این کار بنویسید

amirsadeghi
یک شنبه 14 فروردین 1390, 21:36 عصر
بافرینگ به ذهن خودم رسیده بود. ولی چون حجم دیتا خیلی بالاست جوابگوی پردازش نیست
برای سرویس نوشتن، من برای این دستگاه یه حالت درایور مانند نوشتم که به صورت DLL ازش استفاده میکنم.
سرعت ارتباطش با سخت افزار عالیه و کل دیتا رو مانیتور میکنه. فقط مشکل خوندن و پردازش اون دیتا توی برنامه اصلیه !

milad.biroonvand
سه شنبه 16 فروردین 1390, 20:46 عصر
منظورت از ویندوز سرویس همون توابع سیستمی (api) هست؟


نه منظورم توابع اپی آی نیست ، ویندوز سرویس یه چیزه دیگه ای هست .

amirsadeghi
سه شنبه 16 فروردین 1390, 23:53 عصر
میشه یکم بیشتر توضیح بدی !
ممنون میشم

milad.biroonvand
چهارشنبه 17 فروردین 1390, 06:17 صبح
میشه یکم بیشتر توضیح بدی !
ممنون میشم

تو تاپیک هایی که ایجاد کردم رو نگاه کن ، یه تاپیک کامل در مورد ویندوز سرویس وجود داره .