+ internal async Task LoadAsync(IStreamReader fs, CancellationTokenSource tokenSource = null)\r
+ {\r
+ string str;\r
+ for (int i = 0; (str = await fs.ReadLineAsync().ConfigureAwait(false)) != null; i++)\r
+ {\r
+ int index = this.Length;\r
+ if (index < 0)\r
+ index = 0;\r
+\r
+ this.buf.InsertRange(index, str + Document.NewLine, str.Length + 1);\r
+\r
+ if (tokenSource != null)\r
+ tokenSource.Token.ThrowIfCancellationRequested();\r
+#if TEST_ASYNC\r
+ System.Threading.Thread.Sleep(10);\r
+#endif\r
+ }\r
+ this.Update(this, new DocumentUpdateEventArgs(UpdateType.Clear, -1, -1, -1));\r
+ this.Update(this, new DocumentUpdateEventArgs(UpdateType.Replace, 0, 0, buf.Count));\r
+ }\r
+\r