AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein C# Eigenes Ereignis für eine Klasse
Thema durchsuchen
Ansicht
Themen-Optionen

C# Eigenes Ereignis für eine Klasse

Ein Thema von Luckie · begonnen am 15. Mär 2005 · letzter Beitrag vom 21. Mär 2005
 
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

C# Eigenes Ereignis für eine Klasse

  Alt 15. Mär 2005, 14:27
Ich habe folgende Klasse zum Splitten einer Datei:
Code:
public class FileSplitter
   {
     private string BuildPartFilename(string Filename, long Part)
     {
      string s;
      s = Filename+"."+Part.ToString();
      return s;
     }

     private int MinToRead(int a, int b)
     {
      return Math.Min(a, b);
     }


     public void Split(string Filename, string DestFolder, long cntParts, int PartSize)
     {
      FileStream fts; // FileToSplit
      FileStream pf; // PartFile
      string PartFilename;
      int nBytes = 4096;
      byte[] ByteArray = new byte[nBytes];
      int BytesToRead, BytesRead;
      long Done, OldDone;

      try
      {
         fts = new FileStream(Filename, FileMode.Open, FileAccess.Read);
         fts.Seek(0, SeekOrigin.Begin);
         for (int i = 1; i <= cntParts; i++)
         {
            OldDone = 0;
            BytesToRead = PartSize * 1024; // Size of the file parts
            try
            {
               PartFilename = DestFolder+"\\"+BuildPartFilename(Path.GetFileName(Filename), i);
               if (File.Exists(PartFilename))
                 File.Delete(PartFilename);
               pf = new FileStream(PartFilename, FileMode.CreateNew, FileAccess.Write);
               do
               {
                  BytesRead = fts.Read(ByteArray, 0, Math.Min(ByteArray.Length, BytesToRead));
                  pf.Write(ByteArray, 0, BytesRead);
                  BytesToRead = BytesToRead - ByteArray.Length;
                  Done = fts.Position * 100 / fts.Length;
                  if (Done != OldDone)
                  {
                     OldDone = Done;
                  }
               }
               while (BytesToRead > 0);
               pf.Close();
            }
            catch (Exception e)
            {
               fts.Close();
               throw new FSException(e.Message);                  
               
            }
         }
         fts.Close();
      }
      catch (Exception e)
      {
         throw new FSException(e.Message);
      }
     }
   }
Der würde ich jetzt gerne ein eigenes Ereigniss verpassen, damit ich den Fortschritt anzeigen kann. Ich habe allerdings keinen Plan, wie ich das mache. Das heißt, ich weiß weder, wie ich das Ereigniss in die Klasse bekomme, noch wie ich es dann in der WinForm Klasse einbinde.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz