» »

C# problem z kopiranjem

C# problem z kopiranjem

Guti ::

Pozdravljeni,

Imam eno vprašanje in sicer me zanima zakaj mi pri spodnji kodi:
- najprej skopira vse datoteke
- potem pa izpiše "Začetek kopiranja"
- in nato "Konec kopiranja"

in ne:
- izpiše "Začetek kopiranja"
- skopira datotek
- in nato "Konec kopiranja"


KODA:
public void MessageBox(string msg){
.
.
.
}

public void Kopiraj_datoteke()
{
MessageBox("Začetek kopiranja");
for (int i = 0; i < seznamPoti.Count; i++)
{
File.Copy(seznamPoti[i].ToString(), seznamPoti_cilj[i].ToString(),true);
}
MessageBox("Konec kopiranja");
}


lp,
Take me down to the paradise city
Where the grass is green
And the girls are pretty

MrBrdo ::

Zakaj si pa sam pisal MessageBox metodo? Pokaži še tisto kodo... Drugače ima .NET že MessageBox metodo.
MrBrdo

3p ::

Ker najbrž tvoja "MessageBox" ni modalna (Show namesto ShowDialog) in ker predvidoma uporabljaš Windows.Forms, z zanko za kopiranje zabašeš glavno (GUI) nit, ki več ne zmore pretakati sporočil...

Kopiranje bo moralo iti v svojo nit.

paco ::

Vključi knjižnico za nitenje:
using System.Threading;


V dogodku, kjer pričneš kopiranje:
//Vprašaš uporabnika če želi kopirati datoteke
if (MessageBox.Show("Pričnem kopiranje?", "???", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
{
    //Če je izbral V redu/OK/..., ustvariš novo nit, ki izvede metodo za kopiranje
    Thread KopirajThread = new Thread(new ThreadStart(KopirajDatoteke));
    KopirajThread.Start();
}


Metoda za kopiranje:
private void KopirajDatoteke()
{
    //Tvoja koda za kopiranje datotek

    //Ko je kopiranje končano sporočiš, da je kopiranje končano
    MessageBox.Show("Kopiranje končano!", "!!!", MessageBoxButtons.OK, MessageBoxIcon.Information);
}


Mogoče? :)
It iz aj.

Zgodovina sprememb…

  • spremenilo: paco ()

MrBrdo ::

Ne rabi threada če je modal MessageBox...
MrBrdo

Guti ::

Hvala za tak hitre odgovore...

Vzrok zakaj imam svojo funkcijo za MessageBox je ta, da delam spletno aplikacijo v ASP.net in tam "ne gre" oziroma "ne znam" drugače uporabiti MessageBox-a

Koda:

public void MessageBox(string msg)
{
Label lbl = new Label();
lbl.Text = "< _script language='javascript_'>" + Environment.NewLine + "window.alert('" + msg + "')< _/script_>";
Page.Controls.Add(lbl);
}

Sem brskal po netu pa nisem našel druge rešitve kot te, da si pomagaš s javascript ,ki je client-side(Glede MessageBox-a)
Take me down to the paradise city
Where the grass is green
And the girls are pretty

AndrejS ::

Če delaš to web aplikacijo moreš vedet kako te stvari sploh delajo. Najprej se izvede celotna koda in nato IIS zgenerira stran, zato ne vidiš kaj se je vmes zgodilo.
Rešitev je res da z nitmi rešiš kopiranje, in stvar toliko časa ponovno nalagaš dokler ni nit končala kopiranja. Nato na stran to izpišeš in nehaš ponovno nalaganje. Lepša rešitev je s pomočjo AJAX.

Guti ::

Hvala.. :)
Take me down to the paradise city
Where the grass is green
And the girls are pretty

Guti ::

Imam še eno vprašanje...
Poskušam namreč ustaviti kopiranje...

Začetek kopiranja:
Thread KopirajThread = new Thread(new ThreadStart(KopirajDatoteke));
KopirajThread.Start();

Prekinitev kopiranja:
KopirajThread.Abort();

Pa se nič ne zgodi ko stisnem abort(), kr dalje kopira...
A bi moral kopirat bit po bit ...al je kakšna druga rešitev.

a nima noben nasveta....
Take me down to the paradise city
Where the grass is green
And the girls are pretty

Zgodovina sprememb…

  • spremenilo: Guti ()

3p ::

Kopirati moraš košček po košček (pa ne bit, ampak dovolj malo, da lahko vsako sekundo parkrat preveriš, če uporabnik hoče prekinitev). Po navadi niti tudi ne prekineš z abort, ampak nastaviš kak flag (recimo prekinitev = true ali kaj podobnega).
---
Eh, duga lajtunga. Stara tema. Brisanja pa ni. :)

Zgodovina sprememb…

  • spremenilo: 3p ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[c#] try/catch, v katerem gradniku je napaka

Oddelek: Programiranje
101015 (753) japol
»

Visual Studio C++ MessageBox izpis večih spremenljivk

Oddelek: Programiranje
181708 (1449) spinner
»

[C++] Preverjanje ce je program dos ali win32

Oddelek: Programiranje
211401 (1057) BigWhale
»

[C#] prikazovanje int spremenljivk v sporočilnem oknu

Oddelek: Programiranje
111232 (942) darkolord
»

zacetniska vprasanja pri Visual Basicu 6

Oddelek: Programiranje
111673 (1424) mte

Več podobnih tem