Click here to Skip to main content
15,905,867 members
Home / Discussions / Managed C++/CLI
   

Managed C++/CLI

 
GeneralRe: Mapping a function pointer (CALLBACK) to a delegate to use in BacgroundWorker function parameter Pin
alleyes27-Oct-10 3:43
professionalalleyes27-Oct-10 3:43 
GeneralRe: Mapping a function pointer (CALLBACK) to a delegate to use in BacgroundWorker function parameter Pin
Nish Nishant27-Oct-10 4:01
sitebuilderNish Nishant27-Oct-10 4:01 
GeneralRe: Mapping a function pointer (CALLBACK) to a delegate to use in BacgroundWorker function parameter Pin
alleyes27-Oct-10 4:31
professionalalleyes27-Oct-10 4:31 
GeneralRe: Mapping a function pointer (CALLBACK) to a delegate to use in BacgroundWorker function parameter Pin
Nish Nishant27-Oct-10 5:24
sitebuilderNish Nishant27-Oct-10 5:24 
GeneralRe: Mapping a function pointer (CALLBACK) to a delegate to use in BacgroundWorker function parameter Pin
alleyes27-Oct-10 7:43
professionalalleyes27-Oct-10 7:43 
GeneralRe: Mapping a function pointer (CALLBACK) to a delegate to use in BacgroundWorker function parameter Pin
Nish Nishant27-Oct-10 7:55
sitebuilderNish Nishant27-Oct-10 7:55 
GeneralRe: Mapping a function pointer (CALLBACK) to a delegate to use in BacgroundWorker function parameter Pin
alleyes28-Oct-10 2:40
professionalalleyes28-Oct-10 2:40 
GeneralRe: Mapping a function pointer (CALLBACK) to a delegate to use in BacgroundWorker function parameter Pin
Nish Nishant28-Oct-10 3:47
sitebuilderNish Nishant28-Oct-10 3:47 
Okay, that means you are invoking a managed call from your "native" callback method. That defeats the purpose of wrapping this using C++/CLI in my opinion. Keep your native code native.

If for some reason you do not want to invoke the worker via the member field (maybe due to some peculiarity in your design), you could do this:

typedef	bool (*CB_UpdateStatus)(unsigned PercentComplete, void* pContext);

HRESULT NativeFileRead(size_t DataSize, BYTE* Data, CB_UpdateStatus UpdateStatus, void* pContext)
{
	UpdateStatus(100, pContext);
	return 0;
}

struct MyStruct
{   
	auto_gcroot<BackgroundWorker^> worker;
};
In the ref class:

int FileRead(int dataSize, array<byte>^ data, ManagedUpdateStatus^ updateStatus, BackgroundWorker^ worker)
{
  pin_ptr<ManagedUpdateStatus^> tmp =  &updateStatus;
  MyStruct myStruct;
  myStruct.worker = worker;
  NativeFileRead(0, NULL, (CB_UpdateStatus)Marshal::GetFunctionPointerForDelegate(updateStatus).ToPointer(), &myStruct);  
  return 0;
}

bool DoManagedUpdateStatus(unsigned int percentage, IntPtr pContext)
{
  MyStruct* pMyStruct = (MyStruct*)pContext.ToPointer();
  pMyStruct->worker->ReportProgress(percentage);
  return false;
}


This way you native code does not need to know of the managed code, and you still end up invoking the worker's progress event.
Regards,
Nish
My technology blog: voidnish.wordpress.com

Code Project Forums : New Posts Monitor
This application monitors for new posts in the Code Project forums.

GeneralRe: Mapping a function pointer (CALLBACK) to a delegate to use in BacgroundWorker function parameter Pin
alleyes28-Oct-10 6:10
professionalalleyes28-Oct-10 6:10 
GeneralRe: Mapping a function pointer (CALLBACK) to a delegate to use in BacgroundWorker function parameter Pin
Nish Nishant28-Oct-10 8:27
sitebuilderNish Nishant28-Oct-10 8:27 
QuestionIs this the fastest way to access the RGB values of a Pixel ? Pin
inayathussaintoori23-Oct-10 23:56
inayathussaintoori23-Oct-10 23:56 
AnswerRe: Is this the fastest way to access the RGB values of a Pixel ? Pin
Nish Nishant24-Oct-10 6:38
sitebuilderNish Nishant24-Oct-10 6:38 
AnswerRe: Is this the fastest way to access the RGB values of a Pixel ? Pin
Nish Nishant24-Oct-10 6:40
sitebuilderNish Nishant24-Oct-10 6:40 
GeneralRe: Is this the fastest way to access the RGB values of a Pixel ? Pin
inayathussaintoori24-Oct-10 7:57
inayathussaintoori24-Oct-10 7:57 
GeneralRe: Is this the fastest way to access the RGB values of a Pixel ? Pin
Nish Nishant24-Oct-10 8:03
sitebuilderNish Nishant24-Oct-10 8:03 
Questionreplacing the default list box with custom made list box Pin
emmmatty123-Oct-10 8:54
emmmatty123-Oct-10 8:54 
AnswerRe: replacing the default list box with custom made list box Pin
Nish Nishant23-Oct-10 11:49
sitebuilderNish Nishant23-Oct-10 11:49 
Questiontwo dimension pointers Pin
hasani200722-Oct-10 10:00
hasani200722-Oct-10 10:00 
AnswerRe: two dimension pointers Pin
Nish Nishant23-Oct-10 5:03
sitebuilderNish Nishant23-Oct-10 5:03 
QuestionHow to start interrupted detection process again Pin
rajneshmalik21-Oct-10 2:00
rajneshmalik21-Oct-10 2:00 
AnswerRe: How to start interrupted detection process again Pin
Nish Nishant21-Oct-10 2:21
sitebuilderNish Nishant21-Oct-10 2:21 
QuestionMessage Removed Pin
20-Oct-10 19:59
loid grey manuel20-Oct-10 19:59 
AnswerRe: Auto Update My Application... Pin
Nish Nishant21-Oct-10 1:01
sitebuilderNish Nishant21-Oct-10 1:01 
GeneralRe: Auto Update My Application...[MOVED] Pin
loid grey manuel21-Oct-10 17:36
loid grey manuel21-Oct-10 17:36 
QuestionPrinting a metafile [modified] Pin
frqftgbdafr20-Oct-10 19:17
frqftgbdafr20-Oct-10 19:17 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.