brandelh hat geschrieben:ich denke dass der Ansatz als solcher falsch ist.
Das Dateisystem (die Festplatte) kann nicht gleichzeitig viele Threads bedienen ohne sich gegenseitig zu behindern.
ok mit HD oder "normalen" Netzwerk hast du Recht ... da kann man ja nicht "zusätzlich" noch einen Kanal aufmachen ...
ich wollte eigentlich nur "testen" ob das geht ... nicht unbedingt ob es in einer solchen Umgebung "Sinn" macht.
tatsächlich ist das rekursive Directory() viel schneller als die activeX Property FileSystemDescContainer:Name/Name2 zu setzten ...
Thread sind ja eine schöne Sache ... wenn man die unter Kontrolle hat.
Solange Threads auf verschiedene Objecte z.b. DBF arbeiten funktioniert es, aber wenn die auf gemeinsame arbeiten muss man die synchronisieren.
Bei activeX sind ja alle auf das selbe activeX bezogen und "sperren" kann das activeX ja nicht "automatisch".
deshalb hab überlegt wie man eine "unbekannte" Anzahl von Thread in Griff bekommen könnte.
brandelh hat geschrieben:Beim NEROCMD Aufruf gehe ich hin und kopiere zunächst alle Dateien in eine gewünschte Struktur in ein temporäres Verzeichnis. Dann übergebe ich ein Parameter, dass Nero alle Dateien aus diesem Verzeichnis inkl. aller Unterverzeichnisse brennen soll. Das geht schnell und gut, auch ohne Thread, da die Festplatte am liebsten "Am Stück" arbeitet.
Bei ActiveX müsste das doch auch einstellbar sein, dass Nero ein Verzeichnis komplett brennt, also ein Befehl statt jede Datei einzeln. Dann kümmert sich Nero intern darum und ist auch schnell ...
ich bin noch nicht ganz durch, aber "so" einfach war das doch nicht.
Man sollte erstmal wissen wie ein CD "aufgebaut" ist und welche Unterschiede es gibt.
::oBurner:BurnIsoAudioCD("MyVolume","",.F.,::oIsoTrack,NIL,NIL,::BurnFlag,INT(nWriteSpeed),::nNERO_MEDIA)
wäre eine Methode wie man sie für Audio und(!) Data Format XA-1 verwenden könnte.
Code: Alles auswählen
::oBurner:BurnFileSystemContent(::oFileSys,::BurnFlag,INT(nWriteSpeed),::nNERO_MEDIA)
::oFileSys ist nun ein "Container" der Daten von Directory() entgegen nimmt un zum "brennen" weitergibt.
Man muss Nero also erst mit activeX Objecten "füllen" bevor er was macht
Hat man das nun geschafft und die Xbase++ Application "brennt" ... dann heisst das noch nicht das man die CD-RW auch "lesen" kann.
DAO oder TAO, ISO9600 oder Joliet, falsches "Book" Format (meint es wäre ein Audio-CD)
und wenn die "kleinen" Projekte sauber gebrannt werden ... was ist mit > 650 MB ?
:Overburn := .T. ist ratsam und auch der "richtige" Speed ... + BufferUnderrun ...
last but not least : Die Events von 2 Objecten gleichzeitig "auswerten" !