Ich habe mir den ganzen Morgen den Kopf darüber zerbrochen.
Im Grunde habe ich eine Listbox, und ich möchte verhindern, dass die Benutzer die Auswahl während eines langen laufenden Prozesses ändern, aber es ihnen ermöglichen, immer noch zu blättern.
Lösung:
Alle Antworten waren gut, ich ging mit schlucken Maus-Ereignisse, da das die meisten straight forward war. Ich verdrahtet PreviewMouseDown und PreviewMouseUp auf ein einzelnes Ereignis, das meine backgroundWorker.IsBusy überprüft, und wenn es die IsHandled-Eigenschaft auf die Ereignis-Args auf wahr gesetzt wurde.