Having problems passing an object as param to CreateThread (C++)

Experts,

I'm having problems passing an object as param to CreateThread in C++. Any help greatly appreciated!!!

This is my Thread function, defined outside the class:
static DWORD WINAPI myThreadFunction(LPVOID param);

This is the class definition:
      public ref class MyClass : public MyParentClass

This is my CreateThread Call from within the MyClass object:
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)myThreadFunction, this, 0, NULL);

error C2664: 'CreateThread' : cannot convert parameter 4 from 'MyClass::MyClass ^const ' to 'LPVOID'
1> No user-defined-conversion operator available, or
1> Cannot convert a managed type to an unmanaged type
php-newbieAsked:
Who is Participating?
 
pgnatyukCommented:
Almost. ParameterizedThreadStart should be used. It takes parameter of type object.
http://msdn.microsoft.com/en-us/library/system.threading.parameterizedthreadstart.aspx
http://msdn.microsoft.com/en-us/library/1h2f2459.aspx
There is a simple example on this MSDN page.
0
 
pgnatyukCommented:
Make it so:
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)myThreadFunction, (LPVOID)this, 0, NULL);
0
 
pgnatyukCommented:
>>public ref class MyClass : public MyParentClass
It's managed code. Check this CodeProject article:
Managed threads in Managed C++
http://www.codeproject.com/KB/threads/managedthreads.aspx

I hope it will give a bit different idea.
0
Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
pgnatyukCommented:
One more:
Threads with Windows Forms Controls in Managed C++
http://www.codeproject.com/KB/mcpp/managedsafethreads.aspx
0
 
pgnatyukCommented:
Here is exactly same question in MSDN:
http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/accd9e40-92d6-49ff-ad47-5a06acc91a14
with an accepted answer and explanation.
0
 
php-newbieAuthor Commented:
Thanks for the info, pgnatyuk!

Let's say I go the route of creating a managed thread class as shown in this example:
http://msdn.microsoft.com/en-us/library/system.threading.thread.aspx

How can I pass the 'this' pointer of MyClass (which creates the thread) to the Thread function?
Can I pass it in the definition and how would I do this?
Thread^ oThread = gcnew Thread( gcnew ThreadStart( &MyThread::myThreadFunction ) );

Thanks!

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.