|
Loodud on tavaline sokkel üle TCP/IP ühenduse porti, mis pritsib umbes iga sekundi tagant infot, programm kontrollib, kas info ikka saabub, ning kui ühendus on mõnda aega tumm olnud, sulgeb sokli ja püüab uuesti ühenduda. Siin aga on probleem, sokkel jääb disconnect-käsu juures mõnikord kauaks toppama:
punktid 1 ja 2 on ehtsad Socket-klassi väljakutsed, 3. punkt on näitlikustatud, sest sellele tuleb veel parameetreid juurde lisada ja on tegelikult koodis realiseeritud eraldi sokliklassi kaudu. Kuidas sundida soklit kiiremini sulgeda? Võibolla on mõni parameeter vale?
This küsimus is marked "community wiki".
|
|
Uue ühenduse tegemise eelduseks ei ole ju vana sulgemine. Alustad uuega ja vana paned taustal kinni. Asünkroonne sokli sulgemine oligi see, mida tegelikult vajasin. Suur tänu, miskipärast jäi see võimalus kahe silma vahele.
(Jul 06 '11 at 14:50)
Teet65
|
|
Võib olla ei puutu asjasse aga kuidas sul timer1_Tick välja kutsutakse ... += new EventHandler(timer1_Tick) ja kus sul timer1 luuakse? Mõnikord võib juhtuda et new EventHandleri tõttu tõmmatakse mitu ticki korraga käima. Tegelikult tehakse programmis igasuguseid eelkontrolle, soklit püütakse sulgeda vaid siis, kui "connected" on tõene. Silumismoes seisab täitmisjärg "Disconnect()"-real, liikumata edasi, ja uusi taimeri sündmusi ei näi tekkivat. Kuigi proovin selle versiooni esimesel võimalusel ära, loon mingi globaalse muutuja "close_pending" ja kui see omadus on aktiivne, ei luba uutel sulgemiskatsetel peale tulla.
(Jun 21 '11 at 23:36)
Teet65
Järele proovitud, mitu taimeri sündmust disconnectile peale ei tule.
(Jul 06 '11 at 13:55)
Teet65
|


Paistab, et on liiga krõbe, või on selle portaali progejad tüdinenud uusi teemasid ootamast.
Suvi, kõik rannas või grillivad ;)