-
استفاده از progress bar در پشتيبان گيري
سلام
من بانك اطلاعاتي برنامم رو با SQL ساختم حالا موقعي كه از بانكم پشتيبان مي گيرم براي چند لحظه برنامم هنگ مي كنه حالا مي خوام موقعي كه برنامه درگيره يك progress bar نمايش داره بشه و روند كارو نشون بده
حالا كسي بلده روند پشتبانگيري رو با progress bar هماهنگ كنه
-
نقل قول: استفاده از progress bar در پشتيبان گيري
دوستان من منتظرم چي شد...................... :متفکر:
-
نقل قول: استفاده از progress bar در پشتيبان گيري
يعني هيچ كس بلد نيست :متعجب:
-
1 ضمیمه
نقل قول: استفاده از progress bar در پشتيبان گيري
می تونی از این نمونه ایده بگیری
-
1 ضمیمه
نقل قول: استفاده از progress bar در پشتيبان گيري
-
نقل قول: استفاده از progress bar در پشتيبان گيري
دوست من اگه مي شه بيشتر بران توضيح بده
-
نقل قول: استفاده از progress bar در پشتيبان گيري
دوستان من هنوز منتظرم كسي نيست مارو راهنمايي كنه
////////////////................................\\\\\\\\\\\\\\\\\
-
نقل قول: استفاده از progress bar در پشتيبان گيري
منظورت از پشتیبان گیری ، همان کپی کردن بانک هستش ؟
شما بگید چگونه پشتیبان می گیرید تا کمکتون کنم
-
نقل قول: استفاده از progress bar در پشتيبان گيري
نقل قول:
نوشته شده توسط
ALI TT
منظورت از پشتیبان گیری ، همان کپی کردن بانک هستش ؟
شما بگید چگونه پشتیبان می گیرید تا کمکتون کنم
اين كل كدي است كهمن توي فرم پشتيبان گيري نوشتم
Imports System.Data
Imports System.Data.SqlClient
Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common
Public Class FrmBackUp
Dim path As String
Private strsql As String
Private con As SqlConnection
Private da As SqlDataAdapter
Private com As SqlCommand
Private ds As DataSet
Public Shared Sub BackupDatabase(ByVal ConnectionStr As String, ByVal DevicePath As String, ByVal FileName As String)
Dim DataName As String = FileName
Using cnn As New SqlConnection(ConnectionStr)
cnn.Open()
Dim Srvcon As New ServerConnection(cnn)
Dim Srv As New Server(Srvcon)
' Create backup device item for the backup
Dim bdi As New BackupDeviceItem(DataName, DeviceType.File) 'DevicePath &
' Create the backup informaton
Dim Backup As New Backup
Backup.Devices.Add(bdi)
With Backup
'Type Of Backup
.Action = BackupActionType.Database
.BackupSetDescription = "Backup DataBase"
.BackupSetName = "DB"
.Database = cnn.Database.ToString()
.LogTruncation = BackupTruncateLogType.Truncate
'Backup.ExpirationDate = New DateTime(2007, 5, 1)
' Run the backup
.SqlBackup(Srv)
End With
End Using
End Sub
Private Sub cmdPath_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPath.Click
SaveFile.Filter = "Backup File (*.Bak)|*.bak"
SaveFile.ShowDialog()
txtPath.Text = SaveFile.FileName
'SaveFile.FileName
End Sub
Private Sub FrmBackup_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.MdiParent = Frmmain
Try
con = New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Data.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True")
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub cmdStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdStart.Click
L.Text = "چند لحظه منتظر بمانيد"
path = txtPath.Text
BackupDatabase(con.ConnectionString, SaveFile.FileNames.ToString, SaveFile.FileName)
L.Text = "پشتيبان گيري با موفقييت انجام شد"
L.ForeColor = Color.Green
End Sub
Private Sub cmdBack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBack.Click
Me.Close()
End Sub
End Class
-
نقل قول: استفاده از progress bar در پشتيبان گيري
در مورد هنگ کردن شما باید کد بک آپ رو در یک ریسمان جداگانه بنویسی
اما در مورد هماهنگ کردن زمان و نمایش یک progres bar با توجه به اینکه به موارد بسیاری از جمله حجم فایل سرعت هارد و سرعت کامپیوتر وابسته هست این کار به طور دقیق شدنی نیست همانطور که میبینیم شرکت ادوبی در ویزارد نصب همین مشکل رو داره و یکی دو دقیقه در زمان صفر ثانیه! باقی میمونه. همینطور در ویندوز ایکس پی یا در ویستا که برای کپی هر فایلی میبینیم زمانی رو برای محاسبه زمان هدر میده و در اخر هم غلط از آب در میاد
-
نقل قول: استفاده از progress bar در پشتيبان گيري
نقل قول:
در مورد هنگ کردن شما باید کد بک آپ رو در یک ریسمان جداگانه بنویسی
مي شه بيشتر توضيح بدين
-
نقل قول: استفاده از progress bar در پشتيبان گيري
خوب من یه کد ساده میزارم برای شمارش مثلا از 1 تا 1000000000
یک کلاس ایجاد میکنیم برای شمارش:
public class counter
public Max as integer
Public Event Done(byval Number as integer)
sub Count()
dim intTotal as integer=0
For intLoopIndex As Integer=1 To Max
intTotal+=1
Next
RaiseEvent Done(intTotal)
End Sub
End Class
حالا تو فرم اصلی یک شئی از این کلاس ایجاد میکنیم و ...:
Dim CounterObj as new Counter
Private sub Button1_Click(ByVal sender as system.Object,ByVal e as system.EventArgs) Handles Button1.Click
Thread1 = New System.Threading.Thread(AddressOf CounterObj.Count)
TextBox2.text=""
CounterObj.Maximum=Val(TextBox1.text)
AddHandler CounterObj.Done, AddressOf DoneEvent
Thread1.start()
End Sub
Sub DoneEvent(Byval Number as Integer)
TextBox2.Text=Number
End Sub
البته کامپیوتری که من باهاش دارم اینها رو مینویسم روش VS نصب نیست اگر یکم بهم ریخته هست شما به بزرگی خودتون ببخشید
-
نقل قول: استفاده از progress bar در پشتيبان گيري
دوست اگه ميشه بيشتر توضيح بديد
-
نقل قول: استفاده از progress bar در پشتيبان گيري
با تشکر
میشه در مورد همین برنامه نویسی thread ها بیشتر توضیح بدی.به نظر من هم کار مفیدیه.حتی موقع پرینت.چون میشه کار پرینت را با سایر عملیات بانک همزمان کرد.
-
نقل قول: استفاده از progress bar در پشتيبان گيري
خوب ببینید به هر قطعه کدی که بطور مستقل اجرا میشود ریسمان(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
خوب موفق باشید :لبخند:
-
نقل قول: استفاده از progress bar در پشتيبان گيري
ببخشيد دوست من اگه مي شه يك نمونه كد برام بزاريد
ممنون
-
نقل قول: استفاده از progress bar در پشتيبان گيري
این مقاله رو بخون، توضیح داده که چگونه می توان پشتیبان گیری نمود. از همان روش SMO استفاده کرده که شما در بالا آورده اید اما امکان تشخیص میزان پیشرفت کار هم در آن وجود دارد
http://www.codeproject.com/KB/databa...reWithSmo.aspx
-
نقل قول: استفاده از progress bar در پشتيبان گيري
دوستان من هنوز منتظرم
0000000000000000
-
1 ضمیمه
نقل قول: استفاده از progress bar در پشتيبان گيري
-
نقل قول: استفاده از progress bar در پشتيبان گيري
دوست من
من از روشي كه در پست پشتيبان گيري از SQL در VB.net توضيح داده شده استفاده كردم
اگه كسي مي تونه كمك كنه
-
1 ضمیمه
نقل قول: استفاده از progress bar در پشتيبان گيري
با این روش فقط میتونی انجامش بدی
-
نقل قول: استفاده از progress bar در پشتيبان گيري
نقل قول:
نوشته شده توسط
saadi2
با این روش فقط میتونی انجامش بدی
دوست من من نتونستم از اين كد استفاده كنم
به نظر من اين كد فقط يك progress bar رو با يك تايمر پر مي كنه و ارتباطي با پشتيبان گيري ندارده
ممنون مي شم بيشتر توضيح بدي
-
نقل قول: استفاده از progress bar در پشتيبان گيري
آره دقیقا
هیچ کدی نیست که بشه باهاش در این روش بکاپ گیری رو پیشرفتشو تو پروگرس بار نشون داد چون فقط یک دستور ساده اسکیوال هست. مثل بقیه دستورهای delete , insert, update پس باید به شکل نمایشی فقط این کارو بکنی.
کدهای بکاپتو قبل از این کدای پروگرس قرار بده بعد تایمشم هر جور دوست داری قرار بده. فک نکنم جز این روش راه دیگه ای باشه
-
نقل قول: استفاده از progress bar در پشتيبان گيري
يعني هيچ روشي وجود نداره براي اين كار