ERLEDIGT
JA
JA
ANTWORTEN
1
1
ZUGRIFFE
712
712
EMPFEHLEN
-
Hi
Wie in Betreff schon geschrieben, suche ich ein in CF 3.5 funktionierende Funktion wie ich einen Timeout beim UDPClient oder evtl. auch ueber einen Socket beim Empfangen machen kann.
Folgendes Hab ich schon Probiert:
Socket:
SocketOptions(....ReceiveTimeout, 500); // Funktioniert nicht, da nicht vorhanden
ReceiveSocket.Timeout = 500; // geht auch nicht
UDPClient:
kein Plan was da ueberhautp geht
Ich wollte es schon ueber einen TimerThread machen, der mir dann nach ablauf einer gewissen zeit ein Event ausloest, wenn er davor nicht geschlossen wird.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Thread Timeout = new Thread(TimeoutThread); private void TimeoutThread() { Thread.Sleep(500); //Event!! } private UDPClient(){ // tut irgendwas try{ Timeout.Start(); UDPClientReceive.Receive(Buffer); Timeout.Abort(); } catch(TimeOutException){ // Fehlermeldung } }
Aber ich haenge da!! wie kann ich da dieses Speziefische Event "bauen" und dann noch aufrufen, wenn der Thread wieder aufwacht****
mfg
Blue_Fox
-
So hab jetzt selber was gebastelt....
Weiss nicht ob das jetzt so schoen programmiert ist, aber es funktioniert!!
Weitergeholfen hat mir diese Seite (http://www.mycsharp.de/wbb2/thread.p...3415#post43415). Darauf stuetzt sich auch mein Programm
Hier mal die Ausschnitte:
Meine Timeout Klasse
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
using System; using System.Collections.Generic; using System.Text; using System.Threading; namespace Lightcontrol { class TIMEOUT { public event EventHandler<EventArgs> TimeOutEvent; protected virtual void OnTimeOutEvent(EventArgs e){ EventHandler<EventArgs> timeoutevent = TimeOutEvent; if (timeoutevent != null) { timeoutevent(this, e); } } public void TimeCount() { Thread.Sleep(500); OnTimeOutEvent(EventArgs.Empty); } } }
Die Verarbeitung im Programm. Leider bekomm ich ein SocketException, da ich meinen Client ausserhalb der Methode schliesse
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
TIMEOUT TimeoutObject = new TIMEOUT(); private Thread Timeout; ...... Timeout = new Thread(TimeoutThread); TimeoutObject.TimeOutEvent += TimeOut_TimeOutEvent; ...... try{ Timeout.Start(); //TODO : SocketOptions - ReceiveTimeout don't work -> Sleep should help receivefromServer = ReceiveUDP.Receive(ref sender); Timeout.Abort(); ....... } catch(SocketException){ return null; }
Und dann noch die beiden Funktionen (Threadstart und TimeOut)
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
private void TimeoutThread() { TimeoutObject.TimeCount(); } public void TimeOut_TimeOutEvent(Object objSender, EventArgs e) { SendUDP.Close(); ReceiveUDP.Close(); ErrorDialog Dialog = new ErrorDialog(screensize); DialogResult DiaResult = Dialog.ShowDialog(); if(DiaResult == DialogResult.Cancel){ Timeout.Abort(); } }
Ich hoffe anderen hilft die nun auch weiter!!
Wenn jemand einen Verbesserungsvorschlag hat, bitte schreiben!!
Mfg
Blue_FoxGeändert von Blue_Fox (05.09.11 um 08:58 Uhr) Grund: Falsche Taste gedrueckt
Ähnliche Themen
-
.NET Compact Framework 3.5
Von Mexxchen im Forum .NET CaféAntworten: 0Letzter Beitrag: 16.11.08, 22:45 -
Datenbanken und Compact Framework
Von Freak_Desperado im Forum .NET DatenverwaltungAntworten: 1Letzter Beitrag: 30.08.08, 17:56 -
Compact Framework & Threads
Von realbora im Forum .NET CaféAntworten: 1Letzter Beitrag: 21.11.07, 17:03 -
Compact Framework Bluetooth
Von Trebjun im Forum .NET Windows FormsAntworten: 0Letzter Beitrag: 15.06.07, 17:13 -
Compact Framework und Kryptographie
Von MD1978 im Forum .NET ArchivAntworten: 1Letzter Beitrag: 15.12.04, 10:05





Zitieren
Login





