Как завершить тему или присоединить ее к основной теме - PullRequest
3 голосов
/ 15 января 2011

Упрощенно, я запускаю несколько фоновых потоков (это оригинальный метод), когда они завершают свою работу, они вызывают событие, в этом случае они вызывают оригинальный метод.

Когда событие вызывается, оно запускается под тем потоком, который его вызвал. Прежде чем я вызову оригинальный метод из этого события, я бы хотел присоединиться к основному потоку (или присоединиться обратно в исходном методе). Таким образом избегая потоков, которые могут создавать больше потоков.

Полагаю, я беспокоюсь о том, чтобы исходные потоки никогда не собирались мусором, так как они вызывали больше потоков? Будет ли это так? и как я могу убедиться, что нить закончилась?

Обратите внимание, что я гарантирую, что в любое время может работать только x количество потоков.

1 Ответ

2 голосов
/ 15 января 2011

Темы будут независимыми. Чтобы продвинуться между ними, вам нужна либо базовая синхронизированная очередь, либо что-то вроде метода Control.Invoke.

Чтобы дождаться завершения потока anothe , вы можете использовать:

otherThreas.Join();

Но во многих случаях подход к событиям чище. Но когда-либо будет в другом потоке, так что вам, возможно, придется переключиться обратно (например) в поток пользовательского интерфейса, как упомянуто выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...