}
class WinFileReader : IStreamReader
{
- StreamReader sr;
+ TextReader sr;
#if !METRO
public WinFileReader(string filepath, Encoding enc)
{
this.sr = new StreamReader(filepath, enc);
}
+ public WinFileReader(TextReader tr)
+ {
+ this.sr = tr;
+ }
#else
public WinFileReader(StreamReader sr)
{
}\r
\r
/// <summary>\r
+ /// ストリームからドキュメントを構築する\r
+ /// </summary>\r
+ /// <param name="tr">TextReader</param>\r
+ /// <param name="token">キャンセル用トークン</param>\r
+ /// <returns>Taskオブジェクト</returns>\r
+ public async Task LoadAsync(System.IO.TextReader tr, System.Threading.CancellationTokenSource token)\r
+ {\r
+ WinFileReader fs = new WinFileReader(tr);\r
+ await this.LoadAsyncImpl(fs, token);\r
+ }\r
+\r
+ /// <summary>\r
/// ファイルからドキュメントを構築する\r
/// </summary>\r
/// <param name="filepath">ファイルパス</param>\r
/// <param name="enc">エンコード</param>\r
+ /// <param name="token">キャンセル用トークン</param>\r
/// <returns>Taskオブジェクト</returns>\r
public async Task LoadFileAsync(string filepath, Encoding enc,System.Threading.CancellationTokenSource token)\r
{\r
- this.View.LayoutLines.IsFrozneDirtyFlag = true;\r
WinFileReader fs = new WinFileReader(filepath, enc);\r
+ await this.LoadAsyncImpl(fs, token);\r
+ }\r
+\r
+ async Task LoadAsyncImpl(WinFileReader fs,System.Threading.CancellationTokenSource token)\r
+ {\r
+ this.View.LayoutLines.IsFrozneDirtyFlag = true;\r
await this.Document.LoadAsync(fs, token);\r
this.View.LayoutLines.IsFrozneDirtyFlag = false;\r
TextStoreHelper.NotifyTextChanged(this.textStore, 0, 0, this.Document.Length);\r
if (this.verticalScrollBar != null)\r
this.verticalScrollBar.Maximum = this.View.LayoutLines.Count;\r
this.View.CalculateLineCountOnScreen();\r
+\r
}\r
\r
/// <summary>\r
}\r
\r
/// <summary>\r
+ /// ストリームからドキュメントを構築する\r
+ /// </summary>\r
+ /// <param name="tr">TextReader</param>\r
+ /// <param name="token">キャンセル用トークン</param>\r
+ /// <returns>Taskオブジェクト</returns>\r
+ public async Task LoadAsync(System.IO.TextReader tr, System.Threading.CancellationTokenSource token)\r
+ {\r
+ WinFileReader fs = new WinFileReader(tr);\r
+ await this.LoadAsyncImpl(fs, token);\r
+ }\r
+\r
+ /// <summary>\r
/// ファイルからドキュメントを構築する\r
/// </summary>\r
/// <param name="filepath">ファイルパス</param>\r
/// <param name="enc">エンコード</param>\r
+ /// <param name="token">キャンセル用トークン</param>\r
/// <returns>Taskオブジェクト</returns>\r
public async Task LoadFileAsync(string filepath, Encoding enc, System.Threading.CancellationTokenSource token)\r
{\r
- this.View.LayoutLines.IsFrozneDirtyFlag = true;\r
WinFileReader fs = new WinFileReader(filepath, enc);\r
+ await this.LoadAsyncImpl(fs, token);\r
+ }\r
+\r
+ async Task LoadAsyncImpl(WinFileReader fs, System.Threading.CancellationTokenSource token)\r
+ {\r
+ this.View.LayoutLines.IsFrozneDirtyFlag = true;\r
await this.Document.LoadAsync(fs, token);\r
this.View.LayoutLines.IsFrozneDirtyFlag = false;\r
this.initScrollBars();\r
this.OnMouseMove(new MouseEventArgs(MouseButtons.None, 0, MousePosition.X, MousePosition.Y, 0));\r
this.View.CalculateLineCountOnScreen();\r
+\r
}\r
\r
/// <summary>\r