AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke C# Resynchronisation eines asynchronen Sockets ^^
Thema durchsuchen
Ansicht
Themen-Optionen

Resynchronisation eines asynchronen Sockets ^^

Ein Thema von Meflin · begonnen am 20. Sep 2010 · letzter Beitrag vom 23. Sep 2010
 
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#1

Resynchronisation eines asynchronen Sockets ^^

  Alt 20. Sep 2010, 23:36
Moin,

nachdem mein asynchroner Socket jetzt einwandfrie läuft, stehe ich vor dem Problem, dass manches doch besser synchron ablaufen würde. Konkret gibt es zwei Szenarien, die immer parallel ablaufen:

1) Es treffen Nachrichten unvorhersehbar ein, die abgearbeitet werden sollen (der bisher asynchrone Part)
1a) Es werden Nachrichten asynchron gesendet, Ergebnis ist erstmal irrelevant

2) Es wird eine Nachricht gesendet, aber der Methodenaufurf soll blockieren, bis eine entsprechende Antwort empfangen wurde, und diese Antwort soll zurückgegeben werden. Nicht auszuschließen ist dabei natürlich, dass vor der gewünschten Antwort weitere der o.g. nicht vorhersehbaren Nachrichten eintreffen.

Zu diesem Zweck hatte ich mir folgendes gedacht:
Code:
public object SyncSend(string command, object payload, string syncCommand = null)
{
    synchronizedSend.Reset();
    targetCommand = syncCommand == null ? command : syncCommand;
    Send(command, payload);
    synchronizedSend.WaitOne();
    return synchronizedObjects.Dequeue();
}
Wobei Send das bisher verwendete asynchrone Senden ist und das asynchrone ReceiveCallback synchronizedSend bei Empfang eines adäquaten Objekts signalisiert.

Problem an der Sache: dieses ManualResetEvent blockiert allem Anschein nach auch dieses asynchrone Receive, was quasi in einer endlosschleife läuft (ReceiveCallback ruft wieder BeginReceive auf).

Und ich sehe absolut keinen Grund, wieso dem so sein sollte. Das hieße ja, dass beide Methoden im selben Thread liefen, und das ergibt irgendwie keinen Sinn.

Wer kann mir helfen?
Leo S.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz