readToEndOfFileInBackgroundAndNotify mit NSProgressIndicator

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • readToEndOfFileInBackgroundAndNotify mit NSProgressIndicator

    Hallo zusammen,

    ich habe gerade mit ein wenig Stolz ein NSOpenPanel benutzt, um die darin ausgewählten Dateien über readToEndOfFileInBackgroundAndNotify asynchron zu laden. Nun würde ich gern (weil es sich eben um sehr große Datenmengen handelt) einen NSProgressIndicator benutzen, um den möglichst detaillierten Fortschritt anzuzeigen. Leider ist im NotificationCenter ja nur die NSFileHandleReadToEndOfFileCompletionNotification registriert. Gibt es eine Möglichkeit, dennoch den genauen Fortschritt in Bytes zu ermitteln?

    Viele Grüße
    Marco
  • also wenn du einen filehandle verwendest dann bekommst du auch zwsichndrin notifications.

    an sich ist das hier aber nicht angebracht. Was willst du tun? etwa 100 MB in den speicher laden? Das schafft deine platte innerhalb von 2 sekunden und füllt dir nur den Arbeitsspeicher. Was willst du dann mit der monsterdatei im speicher tun?

    ich würd überlegen wie man das besser machen kann!

    GG
  • Ganz genau gesagt werden beliebig viele Logdateien geladen und deren Inhalt dann zeilenweise separiert. Diese Daten verarbeite ich dann weiter. Warum auch nicht? :)

    Welche Notifications sind das genau, die ich zwischendrin erhalte, wenn es ein NSFileHandle ist? Eine Variante mit [handle readInBackgroundAndNotify] (> 1 Minute) ist sehr viel langsamer als readToEndOfFileInBackgroundAndNotify (ca. 7 Sekunden).
  • Um das herauszufinden habe ich extra mal die NSFileHandleReadToEndOfFileCompletionNotification rausgenommen und nur die NSFileHandleDataAvailableNotification beim default NSNotificationCenter angemeldet. Auch keine Reaktion.

    Klang so, als wenn du genau wüßtest, wie's geht.
  • Original von m99
    Um das herauszufinden habe ich extra mal die NSFileHandleReadToEndOfFileCompletionNotification rausgenommen und nur die NSFileHandleDataAvailableNotification beim default NSNotificationCenter angemeldet. Auch keine Reaktion.

    Klang so, als wenn du genau wüßtest, wie's geht.


    ja nur weil du eine rausnimmst heist es noch lange nicht dass eine andere aufgerufen wird.

    wie lange dauert denn das laden der datei? wenige millisekunden oder doch mehrere sekunden?

    GG
  • RE: readToEndOfFileInBackgroundAndNotify mit NSProgressIndicator

    Lies doch bitte selbst erstmal richtig:
    Original von m99
    ich habe gerade mit ein wenig Stolz ein NSOpenPanel benutzt, um die darin ausgewählten Dateien über readToEndOfFileInBackgroundAndNotify asynchron zu laden. Nun würde ich gern (weil es sich eben um sehr große Datenmengen handelt) einen NSProgressIndicator benutzen, um den möglichst detaillierten Fortschritt anzuzeigen. Leider ist im NotificationCenter ja nur die NSFileHandleReadToEndOfFileCompletionNotification registriert. Gibt es eine Möglichkeit, dennoch den genauen Fortschritt in Bytes zu ermitteln?


    Also nochmal zur Ausgangsfrage:
    Gibt es eine Möglichkeit den genauen Füllstand dieser atomaren Leseoperation zu ermitteln, während sie läuft?
  • ei, lies du mal:

    Reads to the end of file from the file or communications channel in the background and posts a notification when finished.


    was sollte man erwarten:
    a) dass jemand die doku liest zu einer methode bevor er einen thread darüber eröffnet
    oder b) jemenad der helfen will die frage buchstabe für bcuhstabe lesen muss und nicht überfleigen darf (da gehen einige buchstaben manchmal unter)

    die antwort wie es klappen sollte hab ich dir ja schon gegeben: readInBackgroundAndNotify und NSFileHandleDataAvailableNotification
  • Ich vertrete eine andere Einstellung zu einem Forum. Niemand ist gezwungen zu schreiben. Aber wenn, dann doch bitte nett und höflich. Gerade das Niederschreiben von Fragen und Antworten hilft doch am Ende auch denen, die vielleicht mal ähnliche Probleme haben und den Thread über die Suche oder Suchmaschine finden. Da hilft es keinem weiter, wenn man mit einem Kommentar »Lies doch mal die Doku« abgefertigt wird. Zumeist wird der Fragende sowieso schon nach einer Lösung gesucht und auch schon an diversen Lösungswegen gebastelt haben. Aber manchmal kommt man eben einfach nicht weiter.

    readInBackgroundAndNotify zusammen mit NSFileHandleDataAvailableNotification erzeugt bei mir alles andere als das gewünschte Resultat. Die Methode zur Notification wird kein einziges Mal aufgerufen. Hier mal ein Quelltext-Auszug:

    Quellcode

    1. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loadFileProgressive:) name:NSFileHandleDataAvailableNotification object:handle];
    2. [handle readInBackgroundAndNotify];
    3. ...
    4. // selector function
    5. -(void)loadFileProgressive:(NSNotification*)notification {
    6. NSLog(@".");
    7. }
  • Original von m99
    Ich vertrete eine andere Einstellung zu einem Forum. Niemand ist gezwungen zu schreiben. Aber wenn, dann doch bitte nett und höflich. Gerade das Niederschreiben von Fragen und Antworten hilft doch am Ende auch denen, die vielleicht mal ähnliche Probleme haben und den Thread über die Suche oder Suchmaschine finden. Da hilft es keinem weiter, wenn man mit einem Kommentar »Lies doch mal die Doku« abgefertigt wird. Zumeist wird der Fragende sowieso schon nach einer Lösung gesucht und auch schon an diversen Lösungswegen gebastelt haben. Aber manchmal kommt man eben einfach nicht weiter.


    ok, das wars dann von mir. als tipp geb ich dir noch:

    RTFM