Interessante post riguardante il multi-threading nel mondo windows form (classico e WPF) che prende in esame 5 tecniche per evitare il fatidico messaggio: “The calling thread cannot access this object because a different thread owns it”.
Per quanto riguarda windows form penso userò spesso questo semplice e conciso:
1: // WinForm
2: private void OnConnectivityChanged(object sender, ConnStatusInfoEventArgs statusInformation)
3: {
4: this.Invoke(new System.Windows.Forms.MethodInvoker(delegate()
5: {
6: this.MessageTextBlock.Text = statusInformation.msg;
7: }));
8: }