Puh. So weit habe ich es geschafft:
Code:
public event EventHandler Progress;
protected void OnProgress(EventArgs e, long Done)
{
if(Progress != null)
{
//???
}
}
Done hat hier schon den ruichtigen Wert. Nur wie bekomme ich den nach
private void OnProgress(object sender, EventArgs e) von WinForm?
Das steht in meiner Klasse drinne. So sieht der Aufruf beim teilen aus:
Code:
if (Done != OldDone)
{
OldDone = Done;
OnProgress(EventArgs.Empty, Done);
}
So die Zuweisung beim Erstellen des Objektes un der neue EventHandler:
Code:
private void OnProgress(object sender, EventArgs e)
{
//progressBar1.Value =
Application.DoEvents;
}
Ich habe gerade gemerkt, wenn ich hier eine Messaagbox einbaue, dann wird die gar nicht aufgerufen.
Code:
private void btnGo_Click(object sender, System.EventArgs e)
{
FileSplitter fs;
try
{
fs = new FileSplitter();
fs.Progress += new EventHandler(OnProgress);
fs.Split(txtFile.Text, txtFolder.Text,
Convert.ToInt32(lblCntFiles.Text),
Convert.ToInt32(txtFileSize.Text));
}
catch(FSException fse)
{
MessageBox.Show(fse.Message, APPNAME, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}