Since ScintillaStreams is something I wrote I can give you some tips.
Reading 100 MB from N++ is going to take a few seconds, not matter how you do it. In order to not lock up the N++ interface you have to make sure you do the processing in a different thread, e.g. something like
Task.Factory.StartNew(() => { var data = ScintillaStreams.StreamAllText(); while (line != null) { line = data.ReadLine(); //etc. } // Only interact with N++ on the main thread this.Invoke((Action)(() => { MessageBox.Show("The stuff is finished", "MyPlugin"); })); });The way ScintillaStreams works is by getting a pointer to the N++ text buffer, and read it as “raw” as possible. This is likely going to crash horribly if the user modifies the text while it’s reading, so giving control back to the user is kind of a two-edged sword. I still feel it’s worth it though, the user experience is much better. Also consider showing the status of your progress somehow so the users feels something is happening.
I don’t know why “the process never seems to finish”. A 10Mb file should take a second or so to read