C# Connecthandler Funktionsaufruf mit Parametern

-Rayz-

Lieutenant
Registriert
Okt. 2010
Beiträge
897
Hallo,

ich stehe mal wieder auf dem Schlauch und benötige eure Hilfe. Ich versuche gerade eine asynchrone MEthode via AsyncCallback zu realisieren und habe dafür zwei ConnectHandler angelegt.

Code:
        private delegate int Connect();
        private static Connect del;

Nun bekommt die MEthode "BeginData" ein byte Array welches anschließend weiterverarbeitet werden muss.

Code:
        public static IAsyncResult BeginData(AsyncCallback asyncCallback, byte[] buffer)
        {
            try
            {

                del = new Connect(startData(buffer));
                return del.BeginInvoke(asyncCallback, null);
            }
            catch (Exception ex)
            {
                del = null;
   ....
                return null;
            }
        }

Diese Zeile hier ist allerdings fehlerhaft:
del = new Connect(startData(buffer));

Wie kann ich in dem ConnectHandler meine Methode "startData" aufrufen und den Parameter "buffer" übergeben?
Freund Google mag mir da nicht helfen.

MfG und danke :)
 
Zuletzt bearbeitet:
Was ist den die Rückgabe von startData() und was die erwarteten Parameter von ConnectHandler()?
 
die Methode:
Code:
private static int Data(byte[] buffer)

die jetzigen Connect:

Code:
private delegate int Connect(byte[] buffer);
private static Connect del;

Der Aufruf:

Code:
del = (new Connect(Data));

So kommt zwar keine Fehlermeldung aber ich muss meiner Methode "startdata" ein byte array im Connecthandler übergeben. Weiß nur nicht wie -_-
 
Zuletzt bearbeitet:
startData(byte[] buffer) liefert ein int, kann der ConnectionHandler damit überhaupt was anfangen?
 
Kann auch beides void machen..

private delegate void ConnectHandler(byte[] buffer);
private static void startData(byte[] buffer)

Aufruf ändert sich dadurch nicht.
OCRdel = (new ConnectHandler(startData));

ich brauche es aber z.b. so:

OCRdel = new ConnectHandler(startData(buffer));
Und das geht nicht.
 
Ich gebe zu ich kenne mich mit C# nicht aus(komme aus der Java-Welt), aber für mich sieht das einfach sinnfrei aus.

Wenn du OCRdel = new ConnectHandler(startData(buffer)); aufrufst, dann muss der ConnectionHandler mit dem Type des Parameters etwas anfangen können. Wenn du jetzt deine Methode startData auf void umstellst, gibt sie ja garnix mehr zurück. Das wird also noch viel weniger etwas.

Gibt es zu diesem ConnectHandler eine API-Doku ?
 
Zuletzt bearbeitet:
Hab schon ConnectHandler gegooglet aber nichts gefunden.
Der Rückgabewert ist mir ziemlich egal. Mir geht es nur um den Übergabeparameter.
 
Das kann so warscheinlich nicht funktionieren. Den ConnectHandler (whatever it is) wird wohl was anderes als die Rückgabe deiner startData()-Methode erwarten und benötigen. Da bräuchten wir aber noch mehr input.
 
So geht es nun:

Code:
  public static IAsyncResult BeginData(AsyncCallback asyncCallback, string buffer)
        {
            try
            {

               del = (new startData));
                return del.BeginInvoke(buffer,asyncCallback,null);
...
}}

Leider hat sich das erhoffte Ergebnis leider nicht bestätigt. Da das aber ein ganz anderes Thema ist, mache ich dazu einen neuen Thread auf... sobald ich noch was getestet hab.

MfG
 
Zuletzt bearbeitet:
Ich glaube hier lag ein allgemeines Verständnisproblem vor, was Übergabeparameter und Return Werte anbelangt kann das sein ? Warscheinlich hat der Catch gegriffen und es wurde return null; übergeben.
 
Zurück
Oben