FileIO.WriteTextAsync();
Grid.Loaded や RichEditBox.TextChanged などの多くのイベントで試してみましたが、そのメソッドは非同期であり、前のサイクルと呼ばれるプロセスと競合します。その結果、System.IO.FileLoadException
次の説明が表示されます。
ファイルが別のプロセスによって使用されているため、プロセスはファイルにアクセスできません。
では、この場合はどうすればよいのでしょうか?
FileIO.WriteTextAsync();
Grid.Loaded や RichEditBox.TextChanged などの多くのイベントで試してみましたが、そのメソッドは非同期であり、前のサイクルと呼ばれるプロセスと競合します。その結果、System.IO.FileLoadException
次の説明が表示されます。
ファイルが別のプロセスによって使用されているため、プロセスはファイルにアクセスできません。
では、この場合はどうすればよいのでしょうか?
イベントのTextChanged
発生頻度が高すぎます。1 秒間に数文字入力できますTextChanged
。UI スレッドにとってイベントの処理が重すぎます。
この保存操作は Timer Tick イベント ハンドラーで実行できます。次の Tick が発生する前に操作が完了するように十分な長さの Interval を設定します。
DispatcherTimer timer;
public MainPage()
{
this.InitializeComponent();
timer = new DispatcherTimer() { Interval = TimeSpan.FromSeconds(10) };
timer.Tick += Timer_Tick;
timer.Start();
}
private async void Timer_Tick(object sender, object e)
{
await FileIO.WriteTextAsync(file, tbInput.Text);
}