 
  
   
  
   
  
  [Serializable]  
public class MyObject {  
  public int n1 = 0;  
  public int n2 = 0;  
  public String str = null;  
}MyObject obj = new MyObject();  
obj.n1 = 1;  
obj.n2 = 24;  
obj.str = "Some String";  
IFormatter formatter = new BinaryFormatter();  
Stream stream = new FileStream("MyFile.bin", FileMode.Create, FileAccess.Write, FileShare.None);  
formatter.Serialize(stream, obj);  
stream.Close(); 
  
   
  
   
  
   
  
   
  
   
  
   
  
   
  
  В интернете куча всяких примеров подключения к БД из клиентского приложения, но всё это в пределах одного ПК и одного пользователя.
 
  
   
  
   
  
   
  
   
  
   
  
  
В момент сохранения вы сохраняете ваше хранилище, допустим список задач и все. Насчёт делегатов создаёте Хелпер куда скидываете их состояние.
Есть ещё более наглый метод. Используя binaryformatter просто сохраняете весь класс.