I suggest you let your second thread aggregate the data in some struct and, once finished, update your model in one go using that struct. That way you avoid both the view accessing a partially updated model and have just one "update".
As you may think that's surely something I thought about earlier and it's a very complicated go. I will have a look again but I hoped for different solutions.

Also note that the model must only be updated from the gui thread.
I know the implementation works but most times it crashes because of the written reason.