negative60
دوشنبه 14 بهمن 1392, 11:01 صبح
سلام
در حال ساخت يک dll به عنوان کامپوننت برای يک برنامه ديگه هستم مشکلی که دو روزه درگير اونم اين هست که يک ref class داريم که در اون از تريد استفاده شده و داخل اين تريد هم بايد يک اِونت يا تابع رو صدا بزنيم اما هرچقدر سعی و جستجو کردم راهی برای تبديل پارامتر LPVOID به متغير از نوع کلاسم پيدا نکردم; ممنون ميشم اگه کسی بتونه راهنمايی کنه.
#include "stdafx.h"
#include <windows.h>
public delegate void OnWork();
//ref class MyClass;
static DWORD WINAPI StartThread(LPVOID ptr)
{
//MyClass^ cls = static_cast<MyClass^>(ptr);
MyClass^ cls = (MyClass^)ptr;
//MyClass cls = (MyClass)ptr;
//MyClass::myFunction();
//cls->myFunction();
//cls->InWork();
return 0;
}
public ref class MyClass
{
private:
void RunThread()
{
MyClass^ param = this;
int ThreadParametr = 1;
HANDLE TheadhWnd = 0;
TheadhWnd = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&StartThread, ¶m, 0, NULL);
//WaitForSingleObject(TheadhWnd, INFINITE);
//CloseHandle(TheadhWnd);
}
public:
event OnWork^ InWork;
void Start()
{
RunThread();
}
void myFunction()
{
InWork();
}
};
در حال ساخت يک dll به عنوان کامپوننت برای يک برنامه ديگه هستم مشکلی که دو روزه درگير اونم اين هست که يک ref class داريم که در اون از تريد استفاده شده و داخل اين تريد هم بايد يک اِونت يا تابع رو صدا بزنيم اما هرچقدر سعی و جستجو کردم راهی برای تبديل پارامتر LPVOID به متغير از نوع کلاسم پيدا نکردم; ممنون ميشم اگه کسی بتونه راهنمايی کنه.
#include "stdafx.h"
#include <windows.h>
public delegate void OnWork();
//ref class MyClass;
static DWORD WINAPI StartThread(LPVOID ptr)
{
//MyClass^ cls = static_cast<MyClass^>(ptr);
MyClass^ cls = (MyClass^)ptr;
//MyClass cls = (MyClass)ptr;
//MyClass::myFunction();
//cls->myFunction();
//cls->InWork();
return 0;
}
public ref class MyClass
{
private:
void RunThread()
{
MyClass^ param = this;
int ThreadParametr = 1;
HANDLE TheadhWnd = 0;
TheadhWnd = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&StartThread, ¶m, 0, NULL);
//WaitForSingleObject(TheadhWnd, INFINITE);
//CloseHandle(TheadhWnd);
}
public:
event OnWork^ InWork;
void Start()
{
RunThread();
}
void myFunction()
{
InWork();
}
};