Hallo
Ich habe das hier: vb-paradise.de/index.php/Threa…len-Code/?action=firstNew
verfolgt und dann eins meiner alten Tools neu geschrieben..
Jetzt läuft es sehr viel schneller als zuvor.
Auch das Video aus dem Beitrag habe ich mir angesehen. Sehr interessant was er dort erzählt. Dazu mal eine Frage.
Wie kann man eigentlich beeinflussen auf welcher CPU / Kern die App läuft? Nur mal Interessehalber.
Hier mal Auszüge wie ich das mit dem "parallel" gemacht habe.
Spoiler anzeigen
Auf dem Form:
Zwei Classes:
Ich habe das hier: vb-paradise.de/index.php/Threa…len-Code/?action=firstNew
verfolgt und dann eins meiner alten Tools neu geschrieben..
Jetzt läuft es sehr viel schneller als zuvor.
Auch das Video aus dem Beitrag habe ich mir angesehen. Sehr interessant was er dort erzählt. Dazu mal eine Frage.
Wie kann man eigentlich beeinflussen auf welcher CPU / Kern die App läuft? Nur mal Interessehalber.
Hier mal Auszüge wie ich das mit dem "parallel" gemacht habe.
VB.NET-Quellcode
-
- Public Enum OperationMode
- <Description("Es wird nur kopiert.")> CopyOnly
- <Description("Es wird nur gezippt.")> ZipOnly
- <Description("Es wird kopiert und gezippt.")> Both
- End Enum
- Module ModGlobalVars
- ' Global ReadOnly Variables / Propertys
- Public ReadOnly netCrLf As String = Environment.NewLine ' custum Carriage Return/Line Feed
- Public ReadOnly AppExePath As String = Application.ExecutablePath ' Path to the App.exe-File
- Public ReadOnly Datetoday As String = DateTime.Now.ToString("ddd dd.MM.yyyy") ' Dateformat: So 01.01.1000
- Public ReadOnly SaveDate As String = DateTime.Now.ToString("dd_MM_yyyy") ' Date for Directorys
- ' In case several SD-Cards are zipped, here with HH:mm
- Public ReadOnly ZipDate As String = DateTime.Now.ToString("ddMMyyyy_HH_mm") ' Date for Zip-Filenames
- ' Global Variables / Propertys
- Public Property SelectedMode As OperationMode ' The Case between Copy / Zip or Both
- Public Property SourceDirectory As String ' Drive/Directory from SD-Card
- Public Property TargetZipDrive As String ' Targetdrive for the ZipFiles
- Public Property TargetZipDirectory As String ' Targetdirectory for the ZipFiles
- Public Property TargetCopyDrive As String ' Targetdrive for the CopyFiles
- Public Property TargetCopyDirectory As String ' Targetdirectory for the CopyFiles
- Public Property SessionName As String ' The Name for the first folder
- Public Property Abort As Boolean ' Property for canceling the processes
- Friend Property CopyisReady As Boolean ' Property to unlog Controls
- Friend Property ZipisReady As Boolean ' Property to unlog Controls
- ' Method to determine the string from the ENUM
- Public Function GetEnumDescription(enumValue As [Enum]) As String
- Dim fieldInfo As Reflection.FieldInfo = enumValue.GetType().GetField(enumValue.ToString())
- Dim descriptionAttributes() As DescriptionAttribute =
- DirectCast(fieldInfo.GetCustomAttributes(GetType(DescriptionAttribute), False), DescriptionAttribute())
- If descriptionAttributes.Length > 0 Then
- Return descriptionAttributes(0).Description
- Else
- Return enumValue.ToString()
- End If
- End Function
- End Module
Auf dem Form:
VB.NET-Quellcode
-
- #Region "RadioButton Events"
- Private Sub RadioButton_CheckedChanged(sender As Object, e As EventArgs) Handles RbCopyOnly.CheckedChanged, RbZippOnly.CheckedChanged, RbBooth.CheckedChanged
- If DirectCast(sender, RadioButton).Checked Then
- Dim mode As OperationMode = GetSelectedMode(sender)
- SelectedMode = mode
- LblOperationMode.Text = GetEnumDescription(mode)
- End If
- End Sub
- Private Function GetSelectedMode(sender As Object) As OperationMode
- Select Case DirectCast(sender, RadioButton).Name
- Case "RbCopyOnly"
- Return OperationMode.CopyOnly
- Case "RbZippOnly"
- Return OperationMode.ZipOnly
- Case "RbBooth"
- Return OperationMode.Both
- Case Else
- Return OperationMode.Both ' Default value
- End Select
- End Function
- #End Region
- #Region "Async Operations"
- Private Sub BtnStart_Click(sender As Object, e As EventArgs) Handles BtnStart.Click
- If ValidateInput() Then
- PerformSelectedOperation()
- End If
- End Sub
- Private Async Sub PerformSelectedOperation()
- LockControls()
- Select Case SelectedMode
- Case OperationMode.CopyOnly
- Await CopyOnlyAsync()
- Case OperationMode.ZipOnly
- Await ZippOnlyAsync()
- Case OperationMode.Both
- Await ParallelWorkAsync()
- End Select
- End Sub
- Private Async Function ParallelWorkAsync() As Task
- Dim copyTask = CopyManager.DoFileCopy()
- Dim zipTask = ZipManager.DoFileZip()
- Await Task.WhenAll(copyTask, zipTask)
- End Function
- Private Async Function CopyOnlyAsync() As Task
- Await CopyManager.DoFileCopy()
- End Function
- Private Async Function ZippOnlyAsync() As Task
- Await ZipManager.DoFileZip()
- End Function
- #End Region
Zwei Classes:
VB.NET-Quellcode
-
- Public Async Function DoFileZip() As Task(Of Boolean)
- ' Check of Source / Target Directory is valide
- If Not Await CheckDrives() Then
- .......
- UND DIEANDERE CLASS
- Public Async Function DoFileCopy() As Task(Of Boolean)
- ' Check of Source / Target Directory is valide
- If Not Await CheckDrives() Then
- ......
Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen.