Hi,
ich versuche mein eigenes kleines Admin Tool für BF3 zu machen, stoße dabei aber auf ein Problem (was ich auch bei anderen Sache hatte, nur nie die Lust das hinzubekommen ^^).
Wie genau funktioniert das mit async Sachen?
Also es läuft bei mir so ab.
Ich sende einen Befehl an den BF3 Server
SendCommand("admin.listplayers all");
Daraufhin sendet der Server mir eine Nachricht und ein Event wird bei mir ausgelöst.
Dieses Event nutzt die Nachricht und erstellt eine Liste mit allen Spielern für mich.
Und mit dieser Liste möchte ich dann arbeiten.
Also zum besseren Verständnis wo ich warten muss (aber kein Plan wie).
SendCommand("admin.listplayers all");
// hier muss jetzt irgendwie gewartet werden, bis das Event beendet worden ist, also die Liste erstellt worden ist.
// und hier mache ich dann irgendwas mit der Liste.
Ich hoffe ihr könnt mir helfen, weiß nicht so richtig wie ich das erklären soll ^^
MfG
unconvincible
Warum musst du warten? Im Prinzip musst du doch nur irgendeine Lade-Animation anzeigen und wenn die Nachricht eintrifft, deine UI aktualisieren.
ImageTools for Silverlight: http://imagetools.codeplex.com | http://www.silverdiagram.net | http://www.cleancodedeveloper.de b:::
Da ist nix mit einer Ladesimulation 😉 Das soll nur eine ganz einfache Version (nur für mich ^^) werden.
Aber wie geht das denn jetzt mit async (oder meintetwegen auch anders, habe aber viele Events und muss das auf diese Weise verarbeiten, also umständlich sollte das net sein 😉)
Wer schickt wohin irgendwelche Daten? Was ist SendCommand?
Das ist eine Funktion um etwas an den BF3 Server zu senden (habe ich oben aber bereits geschrieben).
Daraufhin reagiert der Server und sendet eine Nachricht, diese nutze ich und mache eine Liste. Diese Schritte sollen erst abgearbeitet werden, damit ich sie dann nutzen kann.
Bis auf Leute, die sich mit BF und dessen Tools auskenne, weiß kein Mensch, was SendCommand
ist.
Du musst schon sagen, was SendCommand genau tut oder wo man die Doku davon sehen kann.
a) kann es sein, dass SendCommand() einen Rückgabewert hat?!
b) kann es sein, dass SendCommand() einen Callback hat?!
c) kann es sein, dass einen entsprechenden allgemeinen Event gibt!?
Ohne solche Infos kann Dir da leider eher niemand hier helfen.
Obs am Ende Umständlich wird oder sehr lapidar hängt eben von der API ab, die DICE/EA da zur Verfügung stellt.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo unconvincible,
ich habe mich gerade mit einem anderen Moderator beraten und beschlossen deinen Thread zu schliessen. Aus folgenden Gründen:
Du fragst in deinem ersten Post zwei Sachen:
Da das asynchrone einen Standardfall darstellt möchte ich dich, auch im Hinblick auf die Eigeninitiative, darauf hinweisen dich damit auseinander zu setzen.
[FAQ] Warum blockiert mein GUI? Ist sicher ein guter Anlaufpunkt.
[Hinweis] Wie poste ich richtig? 1.1 und 1.1.1.
Sicherlich solltest du auch noch mal einen Blick in die ereignisgesteuerte Programmierung werfen. Das Event kannst du ja fangen und dann im Eventhandler weiterarbeiten.
Somit wäre die erste allgemeine Frage schon geklärt. Ich bin mir sicher, dass du dann bei dir weiterarbeiten kannst und bei einer wirklich konkreten Frage bitte ich dich einfach einen neuen Thread zu erstellen.
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck