Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Windows Forms
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2014, 17:36   #1
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию Создание потоков в Windows Forms

Доброго времени суток всем.
Моя проблема в том, что я не могу создать поток в Windows Forms приложении.
Я уже начитался всяких ответов на подобие "зачем мешать управляемый и неуправляемый код", "программирование на C++ под .NET есть ересь" ...
Я всё это понимаю, но простите, другого мне не дано.

Моя задача выглядит так: нужно получить информацию о жёстких дисках, установленных в компьютере, и обновлять эту информацию именно потоком (получать и выводить информацию в потоке).
Из того, чему меня научили: функции _beginthread, _beginthreadex, CreateThread - всё это хорошо, но только в консоли. Мне же задача поставлена всё это сделать в оконном приложении.

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

У меня есть функция:
Код:
void renew(void *pParams)
{
	/* тут получение и отображение необходимых данных в компоненте Label */
}
Ну и вызов функции создания потока:
Код:
_beginthread(renew,0,NULL);
Но, как я уже сказал, всё это нормально работает в консоли (кроме Lable конечно).

Поэтому и вопрос: как создать поток в приложении Windows Forms, который должен выполнять всё то, что я описал выше ?

Ошибки:
error C3867: TESTAPP::Form1::renew: в вызове функции отсутствует список аргументов; используйте "&TESTAPP::Form1::renew" для создания указателя на член
Эта ошибка на функцию создания потока без & перед "renew";

error C2276: &: недопустимая операция с выражением привязанной функции-члена - а это с символом &.

Что мне делать ?
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 28.02.2014, 20:58   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Следует писать
_begingthread(&TESTAPP::Form1::rene w,0,NULL);
И сделать эту функцию статической
либо сделать renew обычной функцией.
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
с# windows forms Илья2014 Windows Forms 2 15.02.2014 22:38
Использование Windows Forms в Mono Develop, Создание кроссприложения xwicked Общие вопросы .NET 4 16.10.2011 16:32
Windows Forms masashama Windows Forms 12 14.02.2011 16:14
windows.forms *stRong* Помощь студентам 0 04.06.2010 04:39
создание Windows Forms Aplication b-e-s Общие вопросы C/C++ 15 04.08.2009 20:06