title: Await/Async Cross-thread calls?
body: <p>I'm learning about async/await and is trying to incorporate them to my code, since some operations have a slight to significant affect on the UI.</p>
  
  <p>In Form1 class I have an:</p>
  
  <pre><code>Private Async Sub Populate(sender As Object, e As EventArgs)
      Await Task.Run(Sub() PopulateGrid(query, dgv, {Button1, Button2}))
  End Sub
  </code></pre>
  
  <p><code>PopulateGrid</code> is in another class, along with similar methods:</p>
  
  <pre><code>Public Shared Sub PopulateGrid(query as DataTable, dgv as DataGridView, menuButtons() as ToolStripButton)
      Try
          dgv.DataSource = query
          ...
  
          ...
      Finally
          SetMenuButtonStates(dgv.CurrentRow IsNot Nothing, menuButtons)
      End Try
  End Sub
  </code></pre>
  
  <p>The error is on the <code>SetMenuButtonStates</code>, since that again is in ANOTHER class, raising a cross-thread exception...</p>
  
  <p>What do I do?</p>