Aber das Prinzip der Vorgehensweise wäre richtig?
Da du Paralelität erreicenh möchtest brauchst du ansich nicht selber mit Task Arbeiten, sondern kannst das von der Parallel-Klasse machen lassen. Du könntest dir dafür die Microsoft Dokumentation anschauen.
die ist in allen Tasks gleich, das ist seltsam.
Ansich ist das nichts seltsames, da du nirgends angibtst auf welches Kern die Task ausgeführt werden soll und die CLR oder CPU das verwalten. Meines Wissens nach kann man den Kern, aber auch nirgens angeben.
Sieht irgendwie so aus, als ob der ws.send(chunk) nichts sendet!
Da müsste eigentlich schon was gesendet werden, weil man dort 10 Logenträge sieht, die eben aussagen das Bytes gesendet wurde.
bringt mir nicht mal die
"Daten versandt."
Das ist wiederum seltsam, da beim ursprünglichen Code, die Loganweisungen direkt nach dem ws.Send(chunk)
ausgeführt wurden und jetzt irgendwie nicht.
Eigentlich müssten ja zumindest bei dem Versuch aus dem das Log ist Daten beim Server angekommen sein. Nur um ganz sicher zu gehen: Hast versuchst zu überprüfen ob die Daten per Websocket beim Server wirklich ankommen, also mithilfe eines minimalen lokalen Servers wie ich es probiert habe oder anderweitig?
Ich meine nicht die Server logs sondern die, die du mit der Log methode in deiner Anwendung anfertigst. Anhand von diesen Logs müsste ersichtlich sein ob die Audiodaten überhaupt gesendet werden was ja noch nicht ganz klar ist.
Die Logs habe ich jetzt schon mehr mals erwähnt, da diese helfen könnten den Fehler zu finden. Sind in den Logs nun überhaupt Einträge vorhanden, wie Sent ... bytes? Das würde ja schonmal helfen herauszufinden woran es jetzt genau liegt.
Angehangen ist die Program.cs des simplen servers den ich benutzt habe. Dieser sendet zwar keine Daten an den Client zurück sowie es der von dir Verwendete Service macht und loggt nur die Anzahl an empfangenen Bytes was ausreichen sollte um zu testen ob die Audiodaten übertragen werden.
Ich bin nun nicht ganz sicher ob mein Code im VS ein Problem auf meinen win11 ARM hat. Ich entwickele auf einem MacBook
Das das Betriebssystem das du verwendest könnte dabei schon eine rolle spielen, da solche NAudio native API's verwendet wobei eigentlich Exceptions ausgelöst werden müssten wenn das der Fall wäre. Bei DataAvailable loggst du doch auch die menge an gesenteten Bytes müsste dort dann nicht auch nachvollziehbar sein ob überhaupt etwas gesendet wird?
Ich habe das mal minimal mit einem Client der Audiodaten sendet und einem Server der diese per WebSocket entpfängt nachgestellt und das hat einwandfrei funktioniert. Den Teil mit einer Konfig, die gesendet wird habe ich zwar weggelassen, allerdings ist die Aufnahme und Sende Logik exakt dieselbe wie die von dir genutzte.
Ansonsten fällt mir nichts wirklich auf was mit dem Problem zutun haben könnte. Um den Fehler weiter könntest du die Logs nehmen, die du dort machst. Es wäre gut zu wissen ob laut den Logs die Daten gesendet werden oder nicht, außerdem könntest du mit einem Haltepunkt in DataAvailable schauen, ob dort alles funktioniert wie es soll.
Ansonsten zwei Anmerkungen generel zum Quellcode: 1. Beim OnMessage nutzt du einen dynamic als Typ was unnötig ist wenn man Betrachtet das Data ein string ist und Deserialize auch einen string nimmt. 2. In DataAvailable nutzt du LINQ um den Chunk an data zusammen zustellen, was nicht effizient ist. Bei dem LINQ ansatz wird jedes einzelne der array Item duchgegangen. Stattdessen kann man Spans nutzen, die auf einen Bereich innerhalb des arrays verweisen. Man würde so eigentlich auch um das erstellen eines zweiten Chunk array drumherum kommen, allerdings unterstützt WebSocketSharp dies nicht.
Jetzt bin ich schon etwas vom eigentlichen Thema abgeschweift... Jedenfalls kann ich da ich nicht den gesamten Code geschweigedenn zugriff auf diesen Transkripierungs Service habe deine Bedingungen nur begrenzt nachstellen und den Rest müsstest du mithilfe von Debuggen oder mehr logging herausfinden. Eventuell kann man dir hier noch bei der deutung von den Logs oder beim Debuggen helfen.
Es wäre hilfreich wenn du denn Code / einen Link zur repo posten könntest, damit man dir besser helfen kann.
Ohne konkreten Code oder eingrezung des Fehlers kann man nur raten wo das Problem sein könnte. Der Fehler muss ja nicht unbedingt beim hochladen per WebSocket sein sondern es könnte vllt. auch sein das es schon beim Aufnehmen nichts kommt.
lg Suiram1
Guten Tag, Meine Frage ist ob es irgendwie möglich ist in Blazor einen Circuit anhand seiner Id zu schließen. Auf GitHub habe ich zwar im Source-Code von Blazor in der CircuitRegistry-Klasse eine Möglichkeit gefunden dies zu tun nur leider ist diese Klasse und weitere zugegörigen Klassen internal. Eine Möglichkeit die ich gefunden habe wäre in der CreateInboundActivityHandler-Methode eines CircuitHandlers eine Exception zu werfen, allerdings wird die Verbindung dabei quasi "still" unterbrochen da der Client dabei nicht die übliche Meldung anzeigt das er die Verbindung zum Server verloren hat. Kennt jemand vllt. ein weg die Verbindung "ordentlich" zu trennen?
Aufrufen kannst du diese einfach mit
FormFunctions.CornerForm(param1, param2, param3);
Wenn du mit FormLoad-Prozedur das event Load
einer Form meinst kannst du im Konstruktor nach InitializeComponent();
folgendes schreiben:
Load += (sender, e) => FormFunctions.CornerForm(param1, param2, param3);
Die Meldung drückt den Fehler schon komplett aus. Man müsste die Methode in eine Klasse verschieben und gegebenenfalls Referenzen zu dieser korrigieren. Nun stellt sich mir allerdings noch die Frage ob das die einzigste Fehlermeldung ist, da wenn die Methode irgendwo im VB Code verwendet wurde auch weitere Fehler angezeigt werden müssten, da die Methode so nicht gefunden werden kann.