Вы пытаетесь выполнить код, который полагается на основной поток управления в другом потоке. Вы должны вызывать его, используя Invoke
метод:
toolStrip.Invoke(() =>
{
toolStrip.DropDownItems.Add(new ToolStripItemEx("start"));
});
При доступе к элементам / методам управления из потока, который отличаетсяиз потока, в котором изначально создан элемент управления, вы должны использовать метод control.Invoke
, он будет маршалировать выполнение в делегате invoke для основного потока.
Edit: Поскольку вы используетеToolStripMenuItem
not ToolStrip
, ToolStripMenuItem
не имеет Invoke
члена, поэтому вы можете использовать вызов формы через "this.Invoke
" или ваш toolStrip
его родительский "ToolStrip
" Invoke, поэтому:
toolStrip.GetCurrentParent().Invoke(() =>
{
toolStrip.DropDownItems.Add(new ToolStripItemEx("start"));
});