ik wil 2 handelingen uitvoeren, maar de 2e mag pas starten als de 1e klaar is,
ik heb als voorbeeld een filecopy genomen, ik kopieer een bestand van 350 MB via het netwerk
naar een andere pc, vervolgens doe ik hetzelfde proces nogmaals.
het probleem is dat ie niet echt wacht tot de 1e klaar is maar gelijk doorgaat naar de 2e.
dat is ook logisch omdat dat er niet ingebouwd zit. ik ben dus op zoek naar een soort lock ofzo wat wacht tot file.copy daadwerkelijk de file helemaal heeft gekopieerd en dan pas doorgaat.
ik heb het geprobeerd met SyncLock maar daarmee gaat ie niet door naar de 2e handeling.
Uiteindelijk is het de bedoeling dat er honderden images worden bewerkt, gerenamed en gekopieerd, op de normale manier loopt dan heel het geheugen vol, vandaar dat ik naar een oplossing zoek waarbij de volgende bewerking pas start als de vorige klaar is.
ik heb daarbij op internet gezocht en ik kwam toen op een threadpool, daarbij heb ik de volgende code geprobeerd:
het probleem heb ik dus al aangegeven dat ie niet wacht tot ie klaar is met in dit geval kopieeren maar gelijk doorgaat naar de volgende. ik hoop dat iemand mij kan helpen met waar ik op moet zoeken bijvoorbeeld of kan aangeven wat ik fout doe.
ik heb als voorbeeld een filecopy genomen, ik kopieer een bestand van 350 MB via het netwerk
naar een andere pc, vervolgens doe ik hetzelfde proces nogmaals.
het probleem is dat ie niet echt wacht tot de 1e klaar is maar gelijk doorgaat naar de 2e.
dat is ook logisch omdat dat er niet ingebouwd zit. ik ben dus op zoek naar een soort lock ofzo wat wacht tot file.copy daadwerkelijk de file helemaal heeft gekopieerd en dan pas doorgaat.
ik heb het geprobeerd met SyncLock maar daarmee gaat ie niet door naar de 2e handeling.
Uiteindelijk is het de bedoeling dat er honderden images worden bewerkt, gerenamed en gekopieerd, op de normale manier loopt dan heel het geheugen vol, vandaar dat ik naar een oplossing zoek waarbij de volgende bewerking pas start als de vorige klaar is.
ik heb daarbij op internet gezocht en ik kwam toen op een threadpool, daarbij heb ik de volgende code geprobeerd:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| Private Sub AC_FileCopy(ByVal state As Object) IO.File.Copy("D:\file.pdf", "\\testpc\test\testfile.pdf", True) CType(state, AutoResetEvent).Set() End Sub Private Sub AC_FileCopy(ByVal state As Object) IO.File.Copy("D:\file.pdf", "\\testpc\test\testfile2.pdf", True) CType(state, AutoResetEvent).Set() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim AIsDone As New AutoResetEvent(False) Dim BIsDone As New AutoResetEvent(False) ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf AC_FileCopy), AIsDone) ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf AC_FileCopy2), BIsDone) Dim ThreadCount, ThreadPorts As Integer ThreadPool.GetAvailableThreads(ThreadCount, ThreadPorts) AIsDone.WaitOne() BIsDone.WaitOne() End Sub |
het probleem heb ik dus al aangegeven dat ie niet wacht tot ie klaar is met in dit geval kopieeren maar gelijk doorgaat naar de volgende. ik hoop dat iemand mij kan helpen met waar ik op moet zoeken bijvoorbeeld of kan aangeven wat ik fout doe.