Diskuze: Hlášení postupu při šifrování
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Promiň špatně zformulováno... Prostě chci získat informace o tom, kolik už se zašifrovalo a promítnou to v progress baru.
Vezmeš si celkovou délku filu a budeš si udržovat počet zapsaných bytů.
long total = FileInfo(inputFile).Length;
long written = 0;
while ((data = fsIn.ReadByte()) != -1)
{
cs.WriteByte((byte)data);
written++;
}
Takže (written/total) jsou procenta zapsaných bytů.
Navíc by cyklus neměl jet po jednom bytu, ale cca po 1-10kB.
Pak můžeš třeba jednom procentu hlásit postup.
To jsem zkusil, ale cyklus jede po jednom bytu a u větších souborů se aplikace sekala.
Vždyť jsem ti psal, ať uděláš cyklus po kilobytech místo bytů.
To znamená, že si vytvoříš pole bytů (třeba byte[1024]) a budeš číst a
zapisovat celé pole najednou.
UI se obvykle aktualizuje po uplynutí nějakého času, například 0.2 nebo 0.5 sekundy.
Tak jako tak, je hezké si pohrát s kryptografií, ale je velká šance, že výsledné šifrování nebude bezpečné, takže nedoporučuji používat v reálu. Jak už jsem psal, teď tam máš chybu v IV, která umožní detekci zprávy, která byla zašifrovaná.
Aby se ti aplikace nesekala, použij BackGroundWorker. Tam si můžeš ošéfovat i výstup v ProgressBaru...
Zobrazeno 7 zpráv z 7.