private void cmbPlatform_SelectedIndexChanged(object sender, EventArgs e)
{
string platform = cmbPlatform.Text;
UpcomingGameFinder gameFinder = new UpcomingGameFinder();
Task.Factory.StartNew<IEnumerable<Game>>(() => gameFinder.FindUpcomingGamesByPlatform(platform))
.ContinueWith((i) => PlaceGameItemsInPanel(i.Result));
}
private void PlaceGameItemsInPanel(IEnumerable<Game> games)
{
int yPosition = 0;
foreach (var game in games)
{
GameItem item = new GameItem(game);
item.Location = new Point(0, yPosition);
panelGameItemsHolder.Controls.Add(item);
yPosition += 125;
}
}
Очевидно, что я делаю что-то не так, на мой взгляд, если я довольно плохо знаком с Задачами, поэтому я не уверен, как это будет работать в этом контексте.
По сути, FindUpcomingGames () занимает много времени для завершения, я хочу получить возвращенную коллекцию из этого метода, создать N количество объектов GameItem (которые являются пользовательскими элементами управления) и поместить их на панель, которая есть в моем Windows Формы.
Я получаю это сообщение об ошибке:
Операция с поперечной резьбой недопустима:
Элемент управления 'panelGameItemsHolder'
доступ из потока, отличного от
нить, в которой он был создан.
Есть предложения?