delegate из callback
От: desco США http://v2matveev.blogspot.com
Дата: 11.04.07 19:33
Оценка: 39 (1)
#Имя: FAQ.dotnet.delegate.from.callback
Здравствуйте, Odi$$ey, Вы писали:

>вопрос — как на С++/CLI подписаться на событие ManagedClass чтоб вызвать функцию callback со строкой msg из параметра события?


можно попробовать что-то такое:
C#

namespace CL1
{
    public delegate void ResultEvent(string msg);

    public class ManagedClass
    {
        public event ResultEvent OnResult;

        public void Run(string message)
        {
            if (OnResult != null)
            {
                OnResult(message);
            }
        }
    }
}

C++

using namespace System;
using namespace System::Runtime::InteropServices;

typedef void (*Result)(const char* msg);

void Callback(const char* msg)
{
    Console::WriteLine(gcnew String(msg));
}

int main(array<System::String ^> ^args)
{
    CL1::ResultEvent^ d =  safe_cast<CL1::ResultEvent^>(Marshal::GetDelegateForFunctionPointer(IntPtr(Callback), CL1::ResultEvent::typeid));
    CL1::ManagedClass c1;
    c1.OnResult += d;

    c1.Run(L"run");
    return 0;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.