Avatar billede madox Nybegynder
27. juli 2005 - 17:52 Der er 4 kommentarer og
1 løsning

Kopiere alle filer fra en mappe i en ny tråd

Jeg har lavet en subrutine som kopierer alle filer i undermapper og mappen selv hen til et andet sted på harddisken. Denne subrutine kalder sig selv rekursivt og har følgende sugnatur:

Sub MyXCopy(ByVal SourceSti As String, ByVal DestSti As String)

Dette virker også fint nok. Jeg har så brug for at skrive hvilke filer der bliver kopieret samt at lave en progressbar som viser hvor langt kopieringen er nået.
Jeg har forsøgt bare at skrive listbox1.items.add(FilNavn) for at vise hvilken fil der lige er blevet kopieret. Men det virker ikke efter hensigten idet at de tilføjede items alle bliver tilføjet når alle filerne er kopieret og altså ikke undervejs som jeg havde tænkt mig det.
Hvordan får jeg det til at virke ? Skal jeg oprette en seperat tråd som står for selve filkopieringen ? Eller hvordan løses problemet
Avatar billede arne_v Ekspert
27. juli 2005 - 18:09 #1
du skal start en seperat tråd !
Avatar billede arne_v Ekspert
27. juli 2005 - 18:10 #2
den her kode har en dummy Copy metode som du kan erstatte med noget
relevant:

Imports System
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Threading

Public Class MainForm
Inherits Form
    Private bar As ProgressBar
    Private start As Button
    Private abort As Button
    Private t As Thread

    Public Sub New()
        bar = New ProgressBar
        start = New Button
        abort = New Button
        SuspendLayout
        bar.Location = New Point (50, 50)
        bar.Size = New Size (200, 50)
        bar.Name = "Progress Bar"
        bar.Minimum = 0
        bar.Maximum = 60
        bar.Value = 0
        bar.Step = 1
        start.Location = New Point (50, 150)
        start.Size = New Size (200, 50)
        start.Name = "Start Button"
        start.Text = "Start"
        AddHandler start.Click, AddressOf StartClick
        abort.Location = New Point (50, 250)
        abort.Size = New Size (200, 50)
        abort.Name = "Abort Button"
        abort.Text = "Abort"
        AddHandler abort.Click, AddressOf AbortClick
        ClientSize = New Size (300, 350)
        Controls.Add(bar)
        Controls.Add(start)
        Controls.Add(abort)
        Name = "Main Form"
        Text = "Main Form"
        ResumeLayout(False)
    End Sub

    Sub Copy()
        Dim i As Integer = 0
        While i < 60
            bar.Value = i
            Thread.Sleep(1000)
            i = i + 1
        End While
    End Sub

    Sub StartClick(ByVal sender As Object, ByVal e As EventArgs)
        t = New Thread (AddressOf Copy)
        t.Start
    End Sub

    Sub AbortClick(ByVal sender As Object, ByVal e As EventArgs)
        t.Abort
    End Sub

    <STAThread()> _
    Public Shared Sub Main(ByVal args As String())
        Application.Run(New MainForm )
        Application.Exit
        Environment.Exit(0)
    End Sub
End Class
Avatar billede madox Nybegynder
01. august 2005 - 14:39 #3
Der er lige et par spørgsmål. Jeg har valgt at lave min form i visual studio, og jeg kan ikke umiddelbart finde en Main subrutine. Skal jeg bare oprette en Main og hvad skal der i givet fald stå i denne ?
Avatar billede arne_v Ekspert
03. september 2005 - 18:48 #4
for at du kan køre et program skal du have en Main så den må være der
Avatar billede arne_v Ekspert
03. september 2005 - 18:48 #5
og et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester