PDA

View Full Version : راهنمایی در مورد زمان پردازش



sarmad
سه شنبه 18 بهمن 1384, 23:15 عصر
سلام

اگر کسی از دوستان نظری دارند ممنون میشم مطرح کنن

یه richtextbox داریم که باید یه text حجیم رو توش load کنیم (10mb )

حالا در حالی که load میشه برنامه مثل هنگ کردن متوقف میشه تا richtextbox آماده شه

آیا میشه در این مدت زمان یه progress bar گذاشته بشه و تا زمان بارگذاری کامل متن این

progress bar به آخر برسه؟


ممنون

بابک زواری
سه شنبه 18 بهمن 1384, 23:17 عصر
اگر این richtextbox یک Event که نشون دهنده میزان لود شدن نداشته باشه میتونی از یک progress bar مثل اول ویندوز استفاده کنی تا زمانی که لود کامل نشده اسکرول کنه

Hamedm
چهارشنبه 19 بهمن 1384, 01:00 صبح
اگر این richtextbox یک Event که نشون دهنده میزان لود شدن نداشته باشه میتونی از یک progress bar مثل اول ویندوز استفاده کنی تا زمانی که لود کامل نشده اسکرول کنه

سلام

عزیز جان یک کار دیگه هم میشه کرد.
میتونی متن رو تکه تکه کنی و یک Tread بنویسی و در Treadکه تکه هارو به Rich اضافه کنی یادتم نره دکمه ای قرار بده که کاربر بتونه این کارو کنسل کنه. در این صورت اگه وسط Tread کاربر کنسل کرد مقداری از متن درون Rich قرار گرفته شده باشه.
در ضمن برای نشون دادن پیشرفت کار حتما از Progress Bar استفاده کن.

در پناه حق موفق باشید و پرتوان

sarmad
چهارشنبه 19 بهمن 1384, 01:21 صبح
ممنون از کمکتون

اما این راه ها که پیشنهاد کردید رو بنده تا حالا کار نکردم

اگر ممکنه راهنمایی یا مثال رو لطف کنید

ممنون

Hamedm
چهارشنبه 19 بهمن 1384, 01:44 صبح
ممنون از کمکتون

اما این راه ها که پیشنهاد کردید رو بنده تا حالا کار نکردم

اگر ممکنه راهنمایی یا مثال رو لطف کنید

ممنون

عزیز جان حتما مگه باید کار کرده باشی؟
کمی برو در MSDN و همین بخش جستجو کن. مطمئنا به نتایج خوبی خواهی رسید. :چشمک:
اگه هم به مشکل برخوردی تاپیک بزن، هر کی از دوستان بتونه بهت کمک میکنه.

در پناه حق موفق باشید و پرتوان

صابر
چهارشنبه 19 بهمن 1384, 02:11 صبح
سلام،
اگه از VB 8 استفاده می‌کنید این کار رو هم می‌تونید بکنید:
یک Textbox به نام TextBox1
یک Button به نام BtnLoad
یک ProgressBar به نام ProgressBar1
را روی صفحه بچینید.
و یک BackGroundWorker را روی صفحه درگ کنید.
و از این کدها استفاده کنید:


Dim str As String = ""
Private Sub btnLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoad.Click
btnLoad.Enabled = False
Dim count As Int32 = Int32.MaxValue
TextBox1.MaxLength = count
TextBox1.Multiline = True
TextBox1.ReadOnly = True
TextBox1.Text = "Loading..."
BackgroundWorker1.WorkerReportsProgress = True
BackgroundWorker1.RunWorkerAsync(TextBox1.Text)

End Sub

Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
For i As Int32 = 0 To 10000
BackgroundWorker1.ReportProgress(i \ 100)
str &= "*"
Next
End Sub
Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
ProgressBar1.Value = e.ProgressPercentage
End Sub

Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
TextBox1.Text = str
TextBox1.ReadOnly = False
MsgBox("Compelete!")
End Sub


البته این خط هم مقدار نسبتاً زیادی زمان لازم دارد:
TextBox1.Text = str
اگر راهی پیدا کردید به ما هم بگوئید!

بابک زواری
چهارشنبه 19 بهمن 1384, 23:20 عصر
مشکل اینه هست که نمیشه تشخیص داد چه مقدار از RichText لود شده که به نسبت اون ProgressBar رو مقدار دهی کرد

صابر
پنج شنبه 20 بهمن 1384, 12:09 عصر
به شرط اینکه RichTextBox1.MaxLength دقیقاً به اندازه متن باشه:

If RichTextBox1.MaxLength <> 0 Then MsgBox((RichTextBox1.Text.Length / RichTextBox1.MaxLength) * 100)
منظورتون اینه یا چیز دیگری؟
ببخشید اگه درست متوجه نشدم.

Hamedm
جمعه 21 بهمن 1384, 11:07 صبح
مشکل اینه هست که نمیشه تشخیص داد چه مقدار از RichText لود شده که به نسبت اون ProgressBar رو مقدار دهی کرد
سلام

وقتی که تکه تکه میکنیم، تعداد کل تکه هارو مگه نداریم؟

در پناه حق موفق باشید و پرتوان

rezaei manesh
سه شنبه 12 دی 1385, 09:31 صبح
اینم من پیدا کردم که کار باbackgroundworker رو توضیح می ده

http://www.danielmoth.com/Blog/2004/12/backgroundworker-sample.html

Sub Zero
چهارشنبه 13 دی 1385, 11:55 صبح
یه سری به لینک زیر بزنید اگه چیزیی متوجه شدید به ما هم بگید .
http://www.xtremevbtalk.com/archive/index.php/t-232533.html