Avatar billede EIHP Juniormester
11. januar 2012 - 10:07 Der er 3 kommentarer og
1 løsning

Mit program fryser

Hej

Jeg har et lille problem. når jeg vil ha mit program til at tag backup af vise af mine filer, fryser den og efterfølgende vender tilbage til normal efter ca. 1 min.
Hvilket vil umuliggøre muligheden for en progressbar. Da softwaret først er normalt når den er færdig.



Min kode:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Security.Principal;



namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
           
        }


        private void Form1_Load(object sender, EventArgs e)
        {
            string qum = System.Windows.Forms.SystemInformation.UserName;
            hl1.Text = "Kan være flere minutter om at kopiere.";
            pb1.Visible = false;
            Creator.Text = "Tilhører: EIHP";
           

           
        }

        private void label1_Click(object sender, EventArgs e)
        {
            string CreatorURL = "http://www.domain.dk";
            System.Diagnostics.Process.Start(CreatorURL);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            button1.Enabled = false;
            button2.Enabled = false;
            pb1.Visible = true;
            // pb1 er progressbar
            string srcPath = "C:\\Users\\%username%";
            string dstPath = "\\HRS.local\\dfs\\Employees\\%username%\\backup";

            string sourcePathq1 = srcPath + "\\AppData\\Roaming\\Microsoft\\Sticky Notes";
            cf(sourcePathq1, dstPath + "\\stickynotes\\");
            string sourcePathq2 = srcPath + "\\Favorites";
            cf(sourcePathq2, dstPath + "\\favoritter\\");
            string sourcePathq3 = srcPath + "\\Desktop";
            cf(sourcePathq3, dstPath + "\\skrivebord\\");


            hl1.Text = "Færdig";
            button1.Enabled = true;
            button2.Enabled = true;
            pb1.Visible = false;
            // pb1 er progressbar
        }

        private void button2_Click(object sender, EventArgs e)
        {
            button1.Enabled = false;
            button2.Enabled = false;
            pb1.Visible = true;
            // pb1 er progressbar
        }




        public static void cf(string Src, string Dst)
        {
            String[] Files;

            if (Dst[Dst.Length - 1] != Path.DirectorySeparatorChar)
                Dst += Path.DirectorySeparatorChar;
            if (!Directory.Exists(Dst)) Directory.CreateDirectory(Dst);
            Files = Directory.GetFileSystemEntries(Src);
            foreach (string Element in Files)
            {
                // Sub directories
                if (Directory.Exists(Element))
                    cf(Element, Dst + Path.GetFileName(Element));
                // Files in directory

                else
                    File.Copy(Element, Dst + Path.GetFileName(Element), true);


            }
        }
    }

}
Avatar billede moddi100 Seniormester
11. januar 2012 - 11:12 #1
Årsagen er at du sætter en arbejder til at udføre hele arbejdet. I dit tilfælde skal han både håndterer formen og lave en backup.

Kig i stedet på brugen af multi-threading. Google siger:
http://www.c-sharpcorner.com/UploadFile/mgold/MultithreadingIntro10062005000439AM/MultithreadingIntro.aspx
Avatar billede EIHP Juniormester
06. februar 2012 - 10:15 #2
moddi100 > mange tak for forslaget. smider du et svar?
Avatar billede moddi100 Seniormester
06. februar 2012 - 16:54 #3
Så lidt, du fik løst det endegyldigt?
Avatar billede EIHP Juniormester
19. april 2012 - 18:45 #4
halvt om halvt, nu fryser den kun hver 8. gang programmet skal kører og det er til at leve med.
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