Как вызвать на фоновом потоке - PullRequest
0 голосов
/ 30 июля 2009

Есть ли способ вызвать метод в фоновом потоке?

Мне известно о BackgroundWorker / создании потока или использовании ThreadPool.QueueUserWorkItem и т. Д., Но это не тот ответ, который я ищу

например SCSF имеет атрибуты, обеспечивающие вызов метода в фоновом режиме или в потоке пользовательского интерфейса

Я хотел бы сделать что-то похожее для небольшого приложения и ищу рабочий пример

Ответы [ 3 ]

0 голосов
/ 30 июля 2009

Есть много способов вызвать метод в фоновом потоке.

Хотите заблокировать во время работы метода? Хотите ли вы вернуть результат из метода? Вы хотите, чтобы этот результат отображался в пользовательском интерфейсе? Метод вызывается только один раз? Много раз, сколько нужно? Много раз в цикле? Асинхронный? Должен ли фоновый поток продолжаться, если ваше приложение закрывается? Ответ на эти вопросы скажет вам, какой метод вы должны использовать.

Обзор различных методов передачи сообщений потока можно найти в замечательной статье в The Code Project.

0 голосов
/ 30 июля 2009

Пул потоков уже использует фоновые потоки. Тем не менее, вы не имеете никакого контроля над этими потоками. Если вы хотите контролировать, то вам нужно использовать System.Threading.Thread. Это дает вам больше контроля над тем, как создается поток (фон, передний план и т. Д.) И управляется (приостановить, возобновить, перевести в спящий режим и т. Д.).

0 голосов
/ 30 июля 2009

Я думаю, BackgroundWorker будет соответствовать вашим потребностям. Это позволяет запускать операцию в фоновом режиме в приложении Winform. Эти статьи имеют рабочие примеры. :)

...