استخدام Multithreading في نسخ الملفات
حيث احدى العمليات تقوم بالنسخ والاخرى تظهر اسم الملفات التي يتم نسخها وعملية اخرى تحسب الوقت المتبقى
ملف المشروع بالمرفقات
![[صورة مرفقة: Backup.gif]](https://www.codeproject.com/KB/vb/Multithreaded/Backup.gif)
وهنا نظرة سريعة على المشروع
حيث احدى العمليات تقوم بالنسخ والاخرى تظهر اسم الملفات التي يتم نسخها وعملية اخرى تحسب الوقت المتبقى
ملف المشروع بالمرفقات
![[صورة مرفقة: Backup.gif]](https://www.codeproject.com/KB/vb/Multithreaded/Backup.gif)
وهنا نظرة سريعة على المشروع
PHP كود :
Imports System.Threading
Imports System.IO
Imports System.Diagnostics.Process
PHP كود :
Imports System.Windows
Public Class Backup
' Declare the FileCopy class.
' This class will create 3 threads to copy, count and mirror files
' and raise events for each, so the events must be handled
' to update the form with status data.
Dim WithEvents CopyFiles As FileCopy
Private Sub StartCopy_Click(ByVal sender As System.Object, e As System.EventArgs) _
Handles StartCopy.Click
' Create the FileCopy class which will initiate the threads
CopyFiles = New FileCopy
' Initiate the copy, count and mirror threads from the FileCopy class
CopyFiles.StartCopy()
End Sub
.
. remaining forms code
.
End Class
PHP كود :
Imports System.IO
Public Class FileCopy
' Declares the variables you will use to hold your thread objects.
Public CopyThread As System.Threading.Thread
Public CountThread As System.Threading.Thread
Public MirrorThread As System.Threading.Thread
Public Sub StartCopy()
' Sets the copy and count threads using the AddressOf the subroutine where
' the thread will start.
CopyThread = New System.Threading.Thread(AddressOf Copy)
CopyThread.IsBackground = True
CopyThread.Name = "Copy"
CopyThread.Start()
CountThread = New System.Threading.Thread(AddressOf Count)
CountThread.IsBackground = True
CountThread.Name = "Count"
CountThread.Start()
End Sub
.
. code for the rest of the class
.
End Class
PHP كود :
Imports System.IO
Public Class FileCopy
' Declare the events that will be raised by each thread
Public Event CopyStatus(ByVal sender As Object, ByVal e As BackupEventArgs)
Public Event CountStatus(ByVal sender As Object, ByVal e As BackupEventArgs)
Public Event MirrorStatus(ByVal sender As Object, ByVal e As BackupEventArgs)
' Declares the variables you will use to hold your thread objects.
Public CopyThread As System.Threading.Thread
Public CountThread As System.Threading.Thread
Public MirrorThread As System.Threading.Thread
' Class variables' Class variables
Private _filePath As String
Private _fileSize As String
Private _copiedFolders As Long
Private _copiedFiles As Long
Private _countedFolders As Long
Private _countedFiles As Long
Private _mirroredFolders As Long
Private _mirroredFiles As Long
.
. even more class variables but we will just show the relevant ones.
.
Public Sub StartCopy()
' Sets the copy and count threads using the AddressOf the subroutine where
' the thread will start.
CopyThread = New System.Threading.Thread(AddressOf Copy)
CopyThread.IsBackground = True
CopyThread.Name = "Copy"
CopyThread.Start()
CountThread = New System.Threading.Thread(AddressOf Count)
CountThread.IsBackground = True
CountThread.Name = "Count"
CountThread.Start()
End Sub
Private Sub Copy()
.
. this is a program loop with logic to copy files
.
Loop to Copy Files
Copy a file here
' Raise the copy status event at the end of the program loop
RaiseEvent CopyStatus(Me, New BackupEventArgs_
("", 0, _copiedFiles, _copiedFolders))
Threading.Thread.Sleep(1)
End Loop
End Sub
Private Sub Count()
.
. this is a program loop with logic to count files
.
Loop to Count Files
Count a file here
' Raise the count status event at the end of the program loop
RaiseEvent CountStatus(Me, New BackupEventArgs_
("", 0, _countedFiles, _countedFolders))
Threading.Thread.Sleep(1)
End Loop
End Sub
.
. code for the rest of the class
.
End Class

