делегировать метод с несколькими сигнатурами - PullRequest
0 голосов
/ 06 ноября 2011

Как добавить метод с подписью в поток?

Я пытаюсь добавить элемент в TreeView GUI, используя метод testAdd(DirectoryEntry d, TreeNode t)

Я сделал это как обычное созданиепотока:

Thread t1;
t1 = new Thread(new ThreadStart(testAdd(directory,rootNode));t1.Start();
t1=new Thread(delegate() {testAdd(directory, rootNode);})
t1.start();

Я получаю сообщение об ошибке, используя invoke.

Как это можно решить?

1 Ответ

0 голосов
/ 06 ноября 2011

Проблема, с которой вы сталкиваетесь, заключается в том, что вы не можете получить доступ к элементам пользовательского интерфейса из фонового потока в приложении WinForms. В используемой подписи нет ничего плохого, вы просто делаете недопустимую операцию над элементом пользовательского интерфейса. Фактическая мутация элемента UI должна происходить в потоке UI / Main приложения. Новый экземпляр Thread гарантирует, что это не будет правдой.

Можно выполнить работу, чтобы рассчитать, что вы добавите в фоновый поток, а затем использовать Invoke, чтобы вернуться к потоку пользовательского интерфейса. Но фактическое добавление должно произойти в пользовательском интерфейсе.

...