如何自动保存RichEditBox文本?

时间:2018-07-19 05:29:06

标签: uwp autosave fileloadexception richeditbox

我尝试了FileIO.WriteTextAsync();并处理了许多事件,包括Grid.Loaded和RichEditBox.TextChanged,但是该方法是异步的,并且与称为上一个周期的过程冲突。因此,System.IO.FileLoadException具有以下描述:

  

该进程无法访问该文件,因为该文件正在被另一个进程使用。

那么在这种情况下我该怎么办?

1 个答案:

答案 0 :(得分:1)

TextChanged事件触发得太频繁-您可以每秒输入几个字符-处理TextChanged事件对于UI线程来说太繁琐了。

您可以在Timer Tick事件处理程序中执行此保存操作,并设置足够长的时间间隔以确保操作在下一次Tick发生之前完成。

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);
}