Programm hängt sich während Timerablauf immer mal auf



  • Hallo, wie vielleicht schon mitbekommen, arbeite ich an einem Instantmessanger.

    Dieser sendet, wenn man eingeloggt ist dauerhaft eine Anfrage zu einem Webservice.
    Die Anfrage lasse ich über einen Timer laufen.

    Während dann immer die Anfrage gesendet wird, sind die Controles der Anwendung (Buttons & Editfelder etc.) nicht klickbar/editier und werden im nachhinein angesprochen, da das Programm sich jeweils für einen Moment weghängt.

    Wie bekomme ich das komfortabel hin, dass die Anwendung weiterhin frei verfügbar bleibt, auch wenn gerade gesendet oder empfangen wird?



  • Verlagere die Kommunikation in einen Worker-Thread... und kommuniziere mit dem GUI-Thread via "BeginInvoke".



  • Wo wir beim Problem wären. - Mit Threads an sich habe ich noch nicht gearbeitet. Bin die ganze Zeit schon am durchstöbern der MSDN, wie diese aussehen müssen.



  • nimm das BackgroundWorker-Control



  • Ist es denn möglich von der DoWork() Methode aus direkt Controles zu beeinflussen? Also Inhalte hinzuzufügen bzw. zu entfernen?

    Hab nun den ganzen Verlauf da hineingeschrieben. Das Programm hängt sich nicht mehr auf. Allerdings passiert auch sonst nichts. Also das was ausgegeben werden soll wird nicht ausgegeben.



  • das Control liefert ein Event wenn der Thread fertig ist ... von da drüfte es ohne Probleme möglich sein ... im DoWork-Event wirst Du wohl um Delegaten nicht herum kommen ... wenn Du aber eh Delegaten verwendest, dann kannst Du auch gleich Threads verwenden


Anmelden zum Antworten