Avatar billede mikkel_sommer Nybegynder
29. november 2007 - 13:39 Der er 5 kommentarer og
1 løsning

Laaang kørsel

Hej Eksperter.

Jeg har et program som skal omdøbe nogle filer i en mappe for mig. Problemet er at der potentielt kan være rigtig mange filer(flere tusind). Jeg har testet med en mappe med ca. 4000 og får fgl. fejl:

CLR kan ikke skifte fra COM-konteksten 0x1a5a90 til COM-konteksten 0x1a5c00 i 60 sekunder.
Tråden, der ejer destinationskonteksten/apartment'en udfører højst sandsynligt enten en
venten uden at pumpe eller behandler en meget lang kørselshandling uden at pumpe
Windows-meddelelser. Denne situation har generelt en negativ indflydelse på
ydeevnen og kan tilmed føre til, at programmet ikke svarer, eller at hukommelsesforbruget
akkumulerer kontinuerligt med tiden. For at undgå problemet skal alle enkelttrådede
apartmenttråde (STA) bruge pumpende wait-primitiver (såsom CoWaitForMultipleHandles)
og rutinemæssigt pumpe meddelelser under lange kørselshandlinger.

Nogen der har en ide om hvordan jeg løser dette således at jeg kan omdøbe alle mine filer ud fejl?
Avatar billede mikkel_sommer Nybegynder
29. november 2007 - 13:43 #1
Det skal måske lige nævnes at jeg får både det gamle og det nye filnavn fra en anden kilde, og i nogle af tilfældene findes den fil jeg forsøger at omdåbe slet ikke. Dette håndtere jeg i en try/catch uden egentlig at gøre noget i catch'en(for hvis filen ikke findes er det ok og programmet skal bare gå videre til den næste). Men måske er det disse Exceptions som hober sig op og skaber problemer i stedet for antallet af filer???
Avatar billede nielle Nybegynder
29. november 2007 - 14:14 #2
I stedet for at bruge try-catch, kan du bruge

if (File.Existss(...))

Det er nu pænere kode.

Ellers er der mindst to lovende forslag her:

http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework/topic56730.aspx
Avatar billede arne_v Ekspert
30. november 2007 - 02:10 #3
Hvordan omdøber programmet de filer ? I hvilken type program ?
Avatar billede mikkel_sommer Nybegynder
30. november 2007 - 10:21 #4
Med File.Move(), Windows app.
Avatar billede mikkel_sommer Nybegynder
30. november 2007 - 12:25 #5
Jeg har fulgt dit råd nielle og så tilføjet et forløbende nummer de gange filen allerede eksisterer. Så smid et svar og tak for hjælpen :-)
Avatar billede nielle Nybegynder
30. november 2007 - 19:08 #6
Svar :^)

Personligt ville jeg nok have valgt det andet råd og startet den op i en BackgroundWorker tråd..
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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