From what I understand, the ViewModel should only contain validation methods, properties, and Commands. There shouldn't be any programming functionality in the ViewModel.
In my program, I want to start threads when a property changes. For example, every time the user types something in a textbox, a new thread is started. Can I have methods like backgroundWorker1_DoWork, backgroundWorker1_ProgressChanged, and backgroundWorker1_RunWorkerCompleted defined in my ViewModel?