int result = -1;
// this is synchronous
myCombo.Invoke(() =>
{
result = myCombo.SelectedIndex;
});
return result;
Это, конечно, немного неуклюже. Лучше было бы реализовать INotifyPropertyChanged в вашей виртуальной машине, создать свойство SelectedIndex и привязать к нему свойство SelectedIndex
вашего поля со списком. Привязки INPC нечувствительны к потокам (3.5 или 4.0+, я не помню, какие именно), поэтому вы можете без проблем читать и обновлять эти свойства из разных потоков в вашей виртуальной машине.