Avatar billede joern Nybegynder
04. april 2002 - 10:54 Der er 4 kommentarer og
2 løsninger

Forsæt mens filer kopieres

Jeg har lavet et program der kører i netværk via ADSL.  Problemet er at der udføres vedligeholdelse på klienter ved kopiering af filer fra serveren, og dette tager tid.  Når en bruger f.eks. har udført en rettelse kan der gå 4-5 sekunder før markøren frigives til at fortsætte (mens filer kopieres).
Jeg kan huske jeg engang her så omtalt en kommando der kunne frigive markør så en bruger f.eks. kunne indtaste i felter.  Jeg har også søgt både på 'Eksperten' og i mit eget arkiv over 'gode' spørgsmål.  Hvad er den kommando?
Avatar billede bennytordrup Nybegynder
04. april 2002 - 11:04 #1
Det kræver, at du laver en ActiveX Server (exe-fil), hvor selve kopieringen af filen foretages.

Dit problem er, at Visual Basic er single threaded, dvs. alt kører i den samme tråd. Derfor fortsætter koden ikke før, at den kaldte proceudre (kopieringen) er fuldført.
Avatar billede joern Nybegynder
04. april 2002 - 12:10 #2
Tak for svaret, jeg ser tiden an om der kommer andre svar, og prøver i øvrigt at lave et lille selvstændigt program til funktionen.  m.v.h. Jørn
Avatar billede bennytordrup Nybegynder
04. april 2002 - 12:33 #3
Husk, at det skal være en ActiveX EXE. Desuden skal du have en procedure i den, som du kalder fra klienten. Denne procedure skal starte en timer, og så skal selve kopieringen foregå i timer-eventet.
Avatar billede ulrina Nybegynder
05. april 2002 - 09:48 #4
Kan du ikke bruge DoEvents
Avatar billede bennytordrup Nybegynder
05. april 2002 - 09:54 #5
Ulrina> DoEvents giver Windows lov til at behandle messages, når programmet kører i en løkke.

Hvis kopieringen af filen foregår med et kald til en VB runtime funktion eller med et API-kald, kører programmet ikke i en løkke.
Avatar billede joern Nybegynder
05. april 2002 - 12:24 #6
>>Ulrina.
Det var faktisk DoEvents jeg havde i tankerne.  Selv om Benny har svaret om mulighederne, vil jeg alligevel prøve.
I øvrigt har jeg ikke lavet en ActiveX, det er jeg for dum til, jeg har lavet en form, der ikke er visible og som selv lukker når filkopieringen er udført.  Det fungerer, men kunden med ADSL har ikke svaret på om det går hurtigere.

Der er et modul med erlæring af variable og så:
Private Sub Form_Load()
     
  n = 0
  Open App.Path & "\jkfaerge.ini" For Input As #1
    Do While EOF(1) = False
      Line Input #1, inidata(n)
      n = n + 1
      If n >= 21 Then Exit Do
    Loop
  Close #1
   
  serversti = inidata(0)
  For a = 0 To 2
    klisti(a) = inidata(a + 10)
    If Right(inidata(a + 10), 1) = "\" Then labkontr.Caption = labkontr.Caption & klisti(a) & vbCrLf
  Next a
 
  Open App.Path & "\status.net" For Input As #2
    Line Input #2, serverstatus
  Close #2
 
  If serverstatus = "nede" Then
    x = MsgBox("Netstatus er 'nede', der kan ikke udføres opdatering af server og øvrige klienter.", 48, "Medd. fra fil-opdaterings programmet.")
    GoTo fejl
  End If
 
  On Error Resume Next
  FileCopy App.Path & "\book.bak", serversti & "book.dat"
   
  For a = 0 To 2
    If Right(klisti(a), 1) = "\" Then
      FileCopy App.Path & "\book.bak", klisti(a) & "book.dat"
    End If
  Next a
   
  End
  Exit Sub
fejl:
  Filopdat.Visible = True
 
End Sub

M.v.h.  Jørn
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

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