I've used C# to solve the following requirement..
- create an app the can receive a lot of data fast
- you must be able to analyse the received data while more are incoming.
- use as little CPU and disk as possible
My idea for an algorithm was..
SIZE = 10MB
Create a mmf with the size of SIZE
On data recived:
if data can't fit mmf: increase mmf.size by SIZE
write the data to mmf
-> The size on the disc are increased in chuncks of 10MB when the previous "room/space" are used.
How is the "increase mmf.size by SIZE" done in C#? I have found a lot of simple examples on creating mmfs and views but the only place (link) I have seen code that acutally increases the mmfs area uses code that can't compile. Any help will be greatly appriciated.
EDIT
This causes an exception :
private void IncreaseFileSize()
{
int theNewMax = this.currentMax + INCREMENT_SIZE;
this.currentMax = theNewMax;
this.mmf.Dispose();
this.mmf = MemoryMappedFile.CreateFromFile(this.FileName, FileMode.Create, "MyMMF", theNewMax);
this.view = mmf.CreateViewAccessor(0, theNewMax);
}
This exception is thrown : The process cannot access the file 'C:UsersmobergDocumentsdata.bin' because it is being used by another process.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…