Skip to main content

Code Camp 15: Boston Sat 5/7

Free annual event.

Comments

Popular posts from this blog

Visual Studio 2010 was released yesterday

Unfortunately, I have just checked the MSDNAA site and they still do not have the release version of Visual Studio 2010. They only have an old Beta2. I would recommend that if you do not have access to Visual Studio 2010 through other means, that you keep an eye on the MSDNAA web site and see if VS2010 becomes available. If and when it becomes available, I would not recommend that you install it while you are finishing CS 503. Download it and save it somewhere and when the course is done, you can knock yourself out :)

Wave Undo

To implement Undo, the simplest way is to use a MemoryStream object in your WaveDisplayForm (MDI Child) and simply serialize the Wave (which should be marked as [Serializable] to the stream and hold on to the stream object. private MemoryStream _undoStream = new MemoryStream(); private bool _canUndo = false; public void SaveForUndo() {      BinaryFormatter bf = new BinaryFormatter();      bf.Serialize(_undoStream, wave);      _undoStream.Flush();      // This rewinds the stream so that when it is used for deserialization, it's ready to use,     // otherwise, the deserialization will start deserializing from the end of the stream and would fail.      _undoStream.Position = 0;      _canUndo = true; }   public void Undo() {      BinaryFormatter bf = new BinaryFormatter();      ...

FileSystemWatcher

FileSystemWatcher fires events on a different thread than the thread that it was registered on (mainly the UI thread). If you attempt to update a UI element (such as the FileView's treeview) you will get a "cross-thread..." exception as I showed in class. To avoid this problem, simply Set the "SynchronizingObject" property of the FileSystemWatcher to the FileView (i.e. a UI object in the Main thread) , this will force the FileSystemWatcher event callback handler to be called on the Main UI thread. FileSystemWatcher fw = new FileSystemWatcher(path, "*.wav"); fw.EnableRaisingEvents = true; fw.NotifyFilter = NotifyFilters.FileName; fw.SynchronizingObject = this;