Taking the risk of paternalizing -
It can't be done well.
C# doesn't have any access to the underlying flash structures, it is virtually impossible to wipe content from solid state memory from the filesystem interfaces - for the following reasons:
- Wear Leveling - the solid state controller/filesystem would write the encrypted file in a different location than the original, thereby not deleting it.
- Even if you get the filesystem to overwrite the data, there is very little guarantee it would actually do so - erase patterns of flash are such that the controller is likely to relocate the entire sector (all 128kbit of it, often enough), and mark the old one as empty in order to limit rewrites - flash is easily damaged by writes and controllers do everything they can to ensure that the data is written evenly. across the memory.
You'd need to write a kernel driver to accomplish this task.
Same goes for (3.) - it can't be done from the userland.
Don't sell security products like that - it wouldn't stop the adversary and would be obnoxious to deal with.