So, mal etwas aufgeräumt.
Also hier starte ich wieder die Bar.
Code:
private void sp_Received(object sender, SerialDataReceivedEventArgs e)
{
string indata = "";
SerialPort sp = (SerialPort)sender;
indata = sp.ReadExisting();
if (indata.Length != 0)
{
if ((indata.Length == 88) && ((indata[0] == 'P') || (indata[0] == 'V')))
{
receiveEvent2.changevalue(1);
....................
receiveEvent2.changevalue(0);
receiveEvent2.Received(PictureFile);
}
}
}
Dann meine Form:
Code:
private void button1_Click(object sender, EventArgs e)
{
dataTest.DataEvent += new EventHandler<Event>(this.ReceivedData2);
dataTest.Data += new EventHandler<Event>(this.ReceivedData);
dataTest.ProgressUpdate += new EventHandler<Event>(this.StartProgressbar);
init.start(dataTest);
}
delegate void barhelp(object sender, Event e);
public void StartProgressbar(object sender, Event e)
{
if (InvokeRequired)
{
barhelp whelp = new barhelp(StartProgressbar);
this.Invoke(whelp, sender, e);
}
else
{
if (e.Progress == 1)
{
progressBar1.Style = ProgressBarStyle.Marquee;
progressBar1.MarqueeAnimationSpeed = 30;
}
else
{
progressBar1.Style = ProgressBarStyle.Continuous;
}
}
}
Den Fehler konnte ich nicht reproduzieren aber ich glaube es lag evtl. daran, dass ich noch meine async. MEthode hatte und von dort aus ständig die Methode StartProgressbar aufgerufen hatte...
Ein "störendes" Problem hab ich nun allerdings noch.. hat zwar nichts mit Progressbar zutun aber bevor ich einen neuen Thread eröffne versuche ich es erstmal hier.
Ich erstelle ja in meiner Berechnung auch ein Bild (Picturefile)
Code:
....
if (File.Exists(PictureFile))
{
File.Delete(PictureFile);
}
...
PictureFile = @"e.jpg";
FileStream stream5 = new FileStream("e.jpg", FileMode.Create);
stream5.Write(biometricData, i, biometricLength - 4 - i);
stream5.Close();
stream5.Dispose();
break;
Wenn ich nun wieder ein Event starte kommt folgendes:
+ $exception {"Der Prozess kann nicht auf die Datei \"D:\\c# Übungen\\DLLTest\\DLLTest\\bin\\Debug\\e.jpg\" zugreifen, da sie von einem anderen Prozess verwendet wird."} System.Exception {System.IO.IOException}
Ich dachte es könnte daran liegen, dass das Bild noch immer in meiner Form angezeigt wird also habe ich
pictureBox1.ImageLocation = "";
versucht. Ohne Erfolg.
Dann dachte ich, evtl. ist der stream noch offen aber close und dispose bringen mich auch nicht weiter. Ich könnte jedesmal das Bild umbenennen aber das finde ich sehr...unsauber.
Eine Idee welcher Prozess hier stören könnte?
PS: Mit der Porgressbar bin ich soweit zufrieden. Danke dafür
PPS: der Name "receiveEvent2.changevalue(0);" wird noch geändert !