我有一个字节数组,我想保存在一个文件中。但是,我不想每次更新都写入文件,因为它可以非常频繁地更新。目前我正计划使用类似于以下的方法;
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[]>anybyte[]可以独立修改的地方?
哔哔one
绝地无双
拉莫斯之舞
相关分类