Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > CreateThread


Автор: Demion 6.1.2011, 05:02
Как использовать CreateThread в CLR проекте (для метода в классе)? Если просто передавать метод, то 
Код

cannot convert from 'overloaded-function' to 'LPTHREAD_START_ROUTINE'

А если использовать 
Код

static

то приложение вылетает с исключением. VS 2010. Заранее спасибо за помощь. C++/CLI

Автор: KaraKum 6.1.2011, 08:44
У функции должен быть один параметр и возвращаемое значение. Нужно посмотреть код объявления функции.

Автор: Demion 6.1.2011, 17:31
Думаю вылетает потому, что методу (который в новом потоке) нужно передавать 
Код

this
, а это managed pointer. Как переконвертировать managed pointer в unmanaged pointer? Кроме того 
Код

static
 метод не может обращаться к другим методам класса. Как можно решить этот вопрос?

Автор: KaraKum 7.1.2011, 22:30
Если метод должен обращаться к другим элементам класса, то такой метод должен быть НЕ "static".
Нужно видеть код что-либо сказать - не понятно что такое "managed pointer".

Автор: xvr 8.1.2011, 18:16
CreateThread (native) с CLR не сочетаются, это уже недавно тут обсуждалось. Используйте родные CLR средства

Автор: Dem_max 8.1.2011, 19:12
Код


DWORD WINAPI Thread(void *srv)
{
   ((MyClass *)srv)->MyClassThread();
   return 0;
}

....................................
hThread = CreateThread(NULL, 0, Thread, this, 0, NULL);
................................


Код


class MyClass
{
      void MyClassThread(void);

};

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)