Здравствуйте, уважаемое сообщество. Передо мной стоит следующая задача:
нужно асинхронно читать из файла, который очень большой, причем если прочитать за опредленное время не успел то надо обрывать чтение. пробовал примеры c nsilocalfile, синхронный вешает интерфейс, а асинхронный не понял как можно прекратить из основного кода. кто нибудь знает куда нужно копать?

N1PhANtoM

асинхронный не понял как можно прекратить из основного кода

А разве там закрытие потока не работает?

что вы имеете ввиду?
я там вообще не нашел способов закрытия. использовал примеры отсюда
http://developer.mozilla.org/En/Code_snippets:File_I/O
способов самому создавать потоки не нашел :(
если есть примеры или документация поделитесь пожалуйста.

пробовал примеры c nsilocalfile, синхронный вешает интерфейс

сделайте, чтобы не вешал. например, так

N1PhANtoM

я там вообще не нашел способов закрытия. использовал примеры отсюда
http://developer.mozilla.org/En/Code_snippets:File_I/O

Так или так не работает:

Выделить код

Код:

stream.finish();
    stream.close();

?

использую данный пример

Выделить код

Код:

var ios = Components.classes["@mozilla.org/network/io-service;1"]
                    .getService(Components.interfaces.nsIIOService);
var fileURI = ios.newFileURI(file);
var channel = ios.newChannelFromURI(fileURI);
var observer = {
  onStreamComplete : function(aLoader, aContext, aStatus, aLength, aResult)
  {
    alert(aResult);
  }
};
var sl = Components.classes["@mozilla.org/network/stream-loader;1"]
                   .createInstance(Components.interfaces.nsIStreamLoader);
sl.init(channel, observer, null);

тут сигнал идет только при завершении потока. вот тут то у меня и проблема, не могу понять как ловить другие события, пробовал ondataavailable, он вообще не реагирует.