I am trying to save program state if user closes the program or initiates shutdown while program is still running but in this case the Task is not awaited and program terminates during writing settings leading to file corruption. How do I do it without creating an additional synchronous method for saving?
private async void Window_Closed(object sender, EventArgs e)
{
await programState.Save();
}
//from programState class
private async Task Save()
{
var state = JsonConvert.SerializeObject(progState, Formatting.Indented);
using (FileStream stream = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite, FileShare.Read, 4096, FileOptions.Asynchronous | FileOptions.SequentialScan))
{
using (var sw = new StreamWriter(stream))
await sw.WriteAsync(state).ConfigureAwait(true);
}
}