2009-07-30 8 views
0

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

Я знаю BackgroundWorker/Создание потока или использовать ThreadPool.QueueUserWorkItem и т.д., но это не ответ я ищу

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

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

+1

Что не так с QueueUserWorkItem? Не достаточно ли фона? Не правда ли, что потоки, которые запускаются в результате QUWI, являются фоновыми потоками? – Cheeso

+0

объяснено выше ---- quoted again ... SCSF имеет атрибуты, чтобы гарантировать, что метод вызывается на фоне или потоке пользовательского интерфейса Я хотел бы сделать что-то похожее для небольшого приложения и ищу рабочий пример – Kumar

ответ

0

Существует много способов вызова метода в фоновом потоке.

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

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

0

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