0

FileIO.WriteTextAsync();Grid.Loaded や RichEditBox.TextChanged などの多くのイベントで試してみましたが、そのメソッドは非同期であり、前のサイクルと呼ばれるプロセスと競合します。その結果、System.IO.FileLoadException次の説明が表示されます。

ファイルが別のプロセスによって使用されているため、プロセスはファイルにアクセスできません。

では、この場合はどうすればよいのでしょうか?

4

1 に答える 1

1

イベントの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);
}
于 2018-07-19T10:29:08.600 に答える