title: Is there a way to synchronize binding in ReactiveUI for WinForms?
body: <p>Let's have a simple binding in ReactiveUI for WinForms.</p>
  
  <pre><code>using System;
  using System.Threading;
  using System.Windows.Forms;
  using ReactiveUI;
  
  namespace WindowsFormsApplication1
  {
      public partial class Form1 : Form, IViewFor&lt;ViewModel&gt;
      {
          public Form1()
          {
              InitializeComponent();
          }
  
          protected override void OnLoad(EventArgs e)
          {
              ViewModel = new ViewModel();
              this.Bind(ViewModel, vm =&gt; vm.Text, v =&gt; v.Text);
              //BeginInvoke(new Action(() =&gt; ViewModel.Text = "WinForm context thread text"));
              ThreadPool.QueueUserWorkItem(state =&gt; ViewModel.Text = "Cross-thread text");
          }
  
          object IViewFor.ViewModel
          {
              get
              {
                  return ViewModel;
              }
              set
              {
                  ViewModel = (ViewModel) value;
              }
          }
  
          public ViewModel ViewModel { get; set; }
      }
  
      public class ViewModel: ReactiveObject
      {
          private string _text;
  
          public string Text
          {
              get
              {
                  return _text;
              }
              set
              {
                  this.RaiseAndSetIfChanged(ref _text, value);
              }
          }
      }
  }
  </code></pre>
  
  <p>Setting the ViewModel.Text property in <i>OnLoad()</i> method generates <b>InvalidOperationException</b> with <b>Cross-thread operation not valid: Control 'Form1' accessed from a thread other than the thread it was created on.</b> text.
  Is there a way how to tell ReactiveUI to synchronize the call automatically? I'd like to avoid having sychronization calls in the ViewModel class...</p>