У меня есть байтовый массив, который я хочу сохранить в файле.Но я не хочу записывать в файл каждый раз, когда он обновляется, потому что он может обновляться очень часто.В настоящее время я планирую использовать подход, подобный следующему:
class ThrottleTest
{
private byte[] _internal_data = new byte[256];
CancellationTokenSource _cancel_saving = new CancellationTokenSource();
public void write_to_file()
{
Task.Delay(1000).ContinueWith((task) =>
{
File.WriteAllBytes("path/to/file.data", _internal_data);
}, _cancel_saving.Token);
}
public void operation_that_update_internal_data()
{
// cancel writing previous update
_cancel_saving.Cancel();
/*
* operate on _internal_data
*/
write_to_file();
}
public void another_operation_that_update_internal_data()
{
// cancel writing previous update
_cancel_saving.Cancel();
/*
* operate on _internal_data
*/
write_to_file();
}
}
Я не думаю, что этот подход будет работать, потому что, когда я отменю токен один раз, он будет отменен навсегда, поэтому он никогда не будетнапишите в файл.
Прежде всего, мне было интересно, нахожусь ли я на правильном пути, и приведенный выше код можно заставить работать.Если нет, то какой будет лучший подход для достижения такого поведения.Кроме того, есть ли практический способ обобщить его до Dictionary<string,byte[]>
, где любой byte[]
может быть изменен независимо?