none
Eine nicht behandelte Ausnahme des Typs "System.IO.IOException" ist in System.dll aufgetreten. RRS feed

  • Frage

  • Ich bekomme zur Zeit eine Fehlermeldung in einem Programm, dass einen Seriellen Port öffnet und etwas hineinschreibt. Bei kleinen Texten die geschrieben werden funktioniert alles einwandfrei. Bei längeren kommt diese Fehlermeldung:

    Eine nicht behandelte Ausnahme des Typs "System.IO.IOException" ist in System.dll aufgetreten.

    Zusätzliche Informationen: Der E/A-Vorgang wurde wegen eines Threadendes oder einer Anwendungsanforderung abgebrochen.

    Ich benutze dazu:


    //Es wird alles richtig empfangen (habs per Verbindung von Pin 2 und 3 auch auslesen lassen, und er schickt das richtige bei kleinen Texten).

    //Edit: Zusätzliche Info: Habs umgeschrieben und gehe jetzt einzelne Zeichen durch und sende diese nacheinander. Dabei läuft eine progressBar mit. Daran sehe ich, dass er schon anfängt zu schreiben, jedoch irgendwann die Fehlermeldung kommt (wie gesagt, nur bei etwas längeren Texten (hab gerade 3004 Zeichen schicken können ohne Probleme [mit Word gezählt]).

    IEnumerator^ Enum = form->richTextBoxSend->Text->GetEnumerator(); while(Enum->MoveNext()) { SerPort->Write(Convert::ToString(Enum->Current)); form->progressBarSend->Value += 1; }


    //Unnützes Wissen Teil 200: Wenn ich alle 100 Zeichen eine Messagebox erscheinen lasse, funktioniert das bis ca. 30.000 Zeichen (weiter habe ich nicht getestet). Ohne Messagebox crasht es ziehmlich direkt wieder...

    SerPort->Write(form->richTextBoxSend->Text);

    WriteTimeout ist auf Infinity. Ich weiß einfach nicht, woran das liegt. Kann es sein, dass die Anweisung "zu lange" dauert, wenn der Text größer ist und er deshalb meckert?

    >>>>>>>>>>>>>>>>>>>>>>> Lösung scheint wohl ein neuer Thread zu sein... warum auch immer...
    http://msdn.microsoft.com/de-de/library/xx3ezzs2.aspx

    • Bearbeitet Stippy19 Dienstag, 21. Februar 2012 15:56
    Dienstag, 21. Februar 2012 12:55

Antworten

Alle Antworten

  • Wie beendest Du denn Deine Threads?


    Jochen Kalmbach (MVP VC++)
    Dienstag, 28. Februar 2012 06:45
  • Hab ich mich nicht wirklich drum gekümmert ^^

    Hatte bisher immer Glück, dass ich keine Probleme bekommen habe. War jetzt das erste Mal, dass es für mich wirklich von Bedeutung war. Meine Lösung, die auch gut zu funktionieren scheint, ist jetzt einfach einen neuen Thread per ThreadStart zu starten in dem dann die Daten an die Serielle Schnittstelle geschickt werden. Habe dann zum Test auch sehr große Textdateien und Texte verschickt und es kommt auch alles an.

    Meine Anforderung war eben auch, dass ich während des Sendens eines Textes zwischendrin auch Empfangen können will. So wie ich es jetzt gelöst habe, wird bei der Übertragung eines Textes (der durch die Verbindung von Pin 2&3 direkt wieder gelesen wird) auch gleichzeitig Empfangen, wobei eben auch einzelne Zeichen gelesen werden und nicht erst wenn der komplette text gelesen wurde (bzw der Leseepuffer voll ist).

    Dienstag, 28. Februar 2012 15:48