Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
NaV'i4ok
3 / 3 / 0
Регистрация: 18.03.2011
Сообщений: 85
#1

Можно ли создать поток для выполнения отдельного метода - C++

08.10.2012, 10:36. Просмотров 627. Ответов 3
Метки нет (Все метки)

Здравствуйте!
Подскажите как ( и возможно ли это вообще ) создать поток для отдельного метода?
Имеется клас окна, в нем метод который перебирает файлы на компе( void CMainDlg::Recurse(LPCTSTR pstr) и вписывает данные в переменнную CString m_sFound; которую надо при изменении вывести в окно...
Как запустить Recurse() в отдельном потоке, если CWinThread* m_pThrInd;- например, хендл для создаваемого потока(тоже член класса) и
C++
1
2
3
4
5
6
UINT/* __cdecl*/ CMainDlg::ThreadInd(LPVOID pParam)
{
    Recurse(("С:\\"));
            //...
             return 0;
}
при нажатии кнопки "ОК" - запустить поток:
C++
1
2
3
4
5
6
void CMainDlg::OnBtnStart()
{
             m_pThrInd = AfxBeginThread( ThreadInd, NULL );
             // и если через указатель на метод тоже не работает...
             //m_pThrInd = AfxBeginThread( CMainDlg::*pf, NULL );
}
Студия ругается: error C3867: 'CMainDlg::ThreadInd': function call missing argument list; use '&CMainDlg::ThreadInd' to create a pointer to member
а если глобальный указатель на метод -
//pointer to method ThreadInd()
UINT (CMainDlg::*pf)(LPVOID pParam) =
&CMainDlg::ThreadInd;
- то
1>e:\users\admin\desktop\task - копия\task\maindlg.cpp(190): error C2143: syntax error : missing ')' before '<tag>::*'
1>e:\users\admin\desktop\task - копия\task\maindlg.cpp(190): error C2661: 'AfxBeginThread' : no overloaded function takes 0 arguments
1>e:\users\admin\desktop\task - копия\task\maindlg.cpp(190): error C2059: syntax error : ')'
1>
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2012, 10:36     Можно ли создать поток для выполнения отдельного метода
Посмотрите здесь:

Можно ли создать поток для нестатического метода класса? - C++
Можно ли создать поток для не статик метода класса? #include &lt;windows.h&gt; #include &lt;stdio.h&gt; class MYCLASS { private : int...

Можно ли в DLL создать поток? - C++
Мне необходимо создать DLL, в котором был бы отдельный поток Windows. Однако, как выяснилось, это не так просто как в случае с приложением....

Как измерить время выполнения отдельного участка кода? - C++
Собственно возник вопрос, каким образом измерить время выполнения того или инного учатска кода?(На винде)

Можно ли открыть поток для чтения и записи файла одновременно? - C++
Можно ли открыть поток для чтения и записи одновременно? Этот код не работает: wchar_t temp; wstring wchars; ...

Создать отдельный управляемый поток для бесконечного процесса - C++
Пишу простую визуализацию броуновского движения в С++ Builder-e рисуя кружочки на имейдже. Подскажите самый простой пример как запихнуть...

Поток из не статического метода - C++
try{ _Running = true; iret = pthread_create(&amp;_ThreadRunClient, NULL, Run_Client, 0); ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,363
08.10.2012, 12:43     Можно ли создать поток для выполнения отдельного метода #2
Этот метод в классе твоего диалога должен быть статическим.
NaV'i4ok
3 / 3 / 0
Регистрация: 18.03.2011
Сообщений: 85
08.10.2012, 12:49  [ТС]     Можно ли создать поток для выполнения отдельного метода #3
но из статического метода нет доступа к нестатическим полям...
тогда надо все поля делать статик...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2012, 13:06     Можно ли создать поток для выполнения отдельного метода
Еще ссылки по теме:

Передача метода в поток после инициализации потока - C++ WinAPI
Разработать класс ThreadPool. Объект этого класса содержит несколько потоков, находящихся в состоянии ожидания. К объекту можно обратиться...

Создать класс с именем Rational для выполнения арифметических действий с дробями - C++
здравствуйте! подскажите пожалуйста в чем ошибка? по задаче мне нужно создать класс с именем Rational для выполнения арифметических...

Поле выполнения цикла получается непрерывный поток данных - C++
Здравствуйте! подскажите пожалуйсто, почему у меня после поле выполнения цикла получаетса какой то неперерывный поток данных? ...

Возвращение массива в качестве результата выполнения метода класса (Kubuntu, netBeans, g++) - C++
Всем привет. Пытаюсь написать свой первый демон на C++ по образу и подобию сделанного на PHP. Столкнулся со следующей проблемой. ...

Процедура обработки сообщений для отдельного контрола - C++
Доброго времени суток! Не могу найти информацию как реализовать отдельную процедуру обработки сообщений какого-либо контрола на фотме. ...

Можно ли перевернуть поток - C++
например условно так string S=&quot;раз два три&quot;; stringstream ss; ss&lt;&lt;S; /*переворот ss*/ ss&gt;&gt;S cout&lt;&lt;S; //три два раз именно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,363
08.10.2012, 13:06     Можно ли создать поток для выполнения отдельного метода #4
А ты в LPVOID pParam передавай указатель на объект, с которым ты работаешь, внутри этого статического метода приводи его к CMainDlg* - и вуаля!
Yandex
Объявления
08.10.2012, 13:06     Можно ли создать поток для выполнения отдельного метода
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru