You have a
collection such as an ArrayList
or a
Hashtable
in which you are storing application
information. This information can be used to tailor the
application’s environment to the last known settings
(e.g., window size, window placement, currently displayed toolbars),
or the information can be used to allow the user to start using the
application at the same point where the application was last shut
down. In other words, if the user were editing an invoice and needed
to shut down the computer for the night, the application would know
exactly which invoice to initially display when the application was
started next time.
Serialize the object(s) to and from a file:
public static void SaveObj(object obj) { FileStream FS = File.Create(dataFile); BinaryFormatter binSerializer = new BinaryFormatter( ); binSerializer.Serialize(FS, obj); FS.Close( ); } public static object RestoreObj( ) { FileStream FS = File.OpenRead(dataFile); BinaryFormatter binSerializer = new BinaryFormatter( ); object obj = binSerializer.Deserialize(FS); FS.Close( ); return (obj); }
The DataFile
constant defines a string value to
use as a filename. The SaveObj
method accepts an
object and attempts to serialize it to a file. Conversely, the
RestoreObj
method removes the serialized object
from the file created in the SaveObj
method.
The following code shows how to use these methods to serialize a
Hashtable
object (note that this will work for any
type that is marked with the
SerializableAttribute
):
public static void TestSerialization( ) { // Create an object to save/restore to/from a file Hashtable HT = new Hashtable( ); HT.Add(0, "Zero"); HT.Add(1, "One"); HT.Add(2, "Two"); // Display this object's contents and save it to a file foreach (DictionaryEntry DE in HT) Console.WriteLine(DE.Key + " : " + DE.Value); SaveObj(HT); // Restore this object from the same file and display its contents Hashtable HTNew = new Hashtable( ); HTNew = (Hashtable)RestoreObj( ); foreach (DictionaryEntry DE in HTNew) Console.WriteLine(DE.Key + " : " + DE.Value); }
If you serialize your objects to disk at specific points in your application, you can then deserialize them and return to a known state; for instance, in the event of an unintended shutdown.