DLL erstellen - eigener "Task"!?

Anfängerfragen zum Programmieren mit PureBasic.
Toshy
Beiträge: 713
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

DLL erstellen - eigener "Task"!?

Beitrag von Toshy »

Hallo.

Bisher habe ich nur die Demo, daher kann ich dieses nicht testen. Ich erstelle in einer anderen Sprache Programme. Einige ZusatzDLL'S habe ich zugekauft oder extra programmieren lassen. Leider entwickelt nur der Hersteller meiner wichtigsten DLL für dich diese nicht mehr weiter und ich muß dies in naher Zukunft selber machen. Da Purebasic u.a. sehr schnell ist werde ich mich wohl für Purebasic entscheiden. Es hängt aber vor allem davon ab:

Rufe ich mit meinen Programmen Funktionen (Proceduren) einer DLL auf so gibt es zwei Unterschiedliche Möglichkeiten aus sicht meines Programmes.

Erstens die Funktion wird ausgeführt und mein PRG wartet bis die Antwort kommt (z.b. erfolgreich oder nicht) und läuft dann zum nächsten Befehl im Programm.

Zweitens die Funktion wird ausgeführt und mein PRG geht sofort weiter zum nächsten Befehl (erhält also keine Rückgabe bzw. NULL oder so). Dabei wird allerdings im Hintergrund die Funktion noch weiter ausgeführt bis alles erledigt ist was halt geschehen soll.

Bei der DLL ich ich habe geht das. Diese Beispieldll macht im Hintergrund ein bissl was an Netzwerkkommunikation usw.

Ist das auch mit Purebasic möglich und wenn ja, wie sollte man das Codetechnisch machen. Schließlich rufe ich doch eine "procedure" auf und erst wenn die "Zuende" ist gibt es doch einen Rückgabewert bzw. der Nächste Befehl im PRG wird erst nach Beendigung der DLLProcedure aufgerufen.

Es wäre nett wen mir das jemand erklären könnte.

Gruß
Thorsten
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Beitrag von Hroudtwolf »

Ich erstelle in einer anderen Sprache Programme
Du meinst nicht zufällig DIV?. Hört sich nämlich danach an.
Leider entwickelt nur der Hersteller meiner wichtigsten DLL für dich diese nicht mehr weiter und ich muß dies in naher Zukunft selber machen
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Re: DLL erstellen - eigener "Task"!?

Beitrag von Laurin »

Friedrichs hat geschrieben:Erstens die Funktion wird ausgeführt und mein PRG wartet bis die Antwort kommt (z.b. erfolgreich oder nicht) und läuft dann zum nächsten Befehl im Programm.
Klar, geht, indem du ganz normal die DLL-Funktion aufrufst.
Zweitens die Funktion wird ausgeführt und mein PRG geht sofort weiter zum nächsten Befehl (erhält also keine Rückgabe bzw. NULL oder so). Dabei wird allerdings im Hintergrund die Funktion noch weiter ausgeführt bis alles erledigt ist was halt geschehen soll.
Die Funktion solltest du innerhalb eines Threads starten. Entweder startet dein Programm einen Thread, wo der DLL-Aufruf drin ist, oder die DLL startet einen Thread, wo sie Sonstiges macht. Beides ist möglich.
Ist das auch mit Purebasic möglich und wenn ja, wie sollte man das Codetechnisch machen. Schließlich rufe ich doch eine "procedure" auf und erst wenn die "Zuende" ist gibt es doch einen Rückgabewert bzw. der Nächste Befehl im PRG wird erst nach Beendigung der DLLProcedure aufgerufen.
Wie oben schon gesagt, nimm Threads. Die kann man auch innerhalb einer selbstprogrammierten DLL verwenden.

Greetz Laurin

Edit: Hab's fast vergessen: Threads sind quasi Programme im Programm, die asynchron zum Hauptprogramm laufen und zB für langwierige Aufgaben geeignet sind. In PB werden ganz normale Prozeduren durch CreateThread() zu Threads umfunktioniert.
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Toshy
Beiträge: 713
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

Beitrag von Toshy »

Hroudtwolf hat geschrieben:
Du meinst nicht zufällig DIV?. Hört sich nämlich danach an.
Nein. Sagt mir auch nichts.
Greetz Laurin hat geschrieben:
Edit: Hab's fast vergessen: Threads sind quasi Programme im Programm, die asynchron zum Hauptprogramm laufen und zB für langwierige Aufgaben geeignet sind. In PB werden ganz normale Prozeduren durch CreateThread() zu Threads umfunktioniert.
Danke.
Das scheint es zu sein. die Threads müßte allerdings die DLL machen, da im Programm selbst dies schlecht möglich ist. Also geht das alles wenn ich will. Dann schaue ich mir mal die runtergeladene Hilfe an und schaue demnächst wie das geht. Dann werde ich mir wohl wenn ich mit Threads klarkomme (testen in der Demo) demnächst wohl auch Purebasic holen.

Vielen Dank auf jedenfall für die Info.
So, dann kann ich die Tage ja glatt weitere Fragen rausjagen :-)

Gruß
Thorsten
Antworten