从C+引发事件+/CLI到C#

从C+引发事件+/CLI到C#,c#,c++-cli,C#,C++ Cli,我正在尝试将一个事件从CLI/C++类引发回C 我的代码如下所示 调用WriteLog函数应触发事件。但当运行时,事件不会触发。此外,没有可见的错误 ----C++/CLI----- ''' ''' ----C#---- ''' ''我已经解决了这个问题。问题在于实例创建。我实际上是将CLI实现为一个单例类,并在C#code中创建另一个对象。在C#中使用相同的实例将解决上述问题 ----C++/CLI----- ''' ''' ----C#---- ''' ''”问题不清楚。CLI的全部要点是源

我正在尝试将一个事件从CLI/C++类引发回C

我的代码如下所示

调用WriteLog函数应触发事件。但当运行时,事件不会触发。此外,没有可见的错误

----C++/CLI-----

'''

'''

----C#----

'''


''

我已经解决了这个问题。问题在于实例创建。我实际上是将CLI实现为一个单例类,并在C#code中创建另一个对象。在C#中使用相同的实例将解决上述问题

----C++/CLI-----

'''

'''

----C#----

'''


''”

问题不清楚。CLI的全部要点是源语言不重要。您可以使用从C++/CLI编译的DLL,方法与VB/CLI、C#和F#相同。
public ref class CLoggerCLI
{
public:
    CLoggerCLI();
    ~CLoggerCLI();
    delegate void NotificationDelegate(System::String^ message);
    event NotificationDelegate^ NotificationEvent;
    void WriteLog(string message);
    static CLoggerCLI^ GetSingleInstnace();

private:
    static CLoggerCLI^ singleInstance;
    static Object^ m_lock = gcnew Object();

};

void CLoggerCLI::WriteLog(string message)
{
    System::String^ msg = gcnew System::String(message.c_str());
    NotificationEvent(msg);
}
  public class TestClass
    {
        #region Private Fields

        private CLoggerCLI loggerCLI = new CLoggerCLI();

        #endregion


        #region Public Method
        public TestClass()
        {
            this.loggerCLI.NotificationEvent += LoggerCLI_NotificationEvent;
        }

        private void LoggerCLI_NotificationEvent(string message)
        {
            Console.WriteLine($"*****{message}****");
        }
}
public ref class CLoggerCLI
{
public:

    delegate void NotificationDelegate(System::String^ message);
    event NotificationDelegate^ NotificationEvent;
    void WriteLog(string message);
    static CLoggerCLI^ GetSingleInstnace();

private:
    static CLoggerCLI^ singleInstance;
    static Object^ m_lock = gcnew Object();
    CLoggerCLI();
    ~CLoggerCLI();

};

void CLoggerCLI::WriteLog(string message)
{
    System::String^ msg = gcnew System::String(message.c_str());
    NotificationEvent(msg);
}
  public class TestClass
    {



        #region Public Method
        public TestClass()
        {
            CLoggerCLI.GetSingleInstnace().NotificationEvent += LoggerCLI_NotificationEvent;
        }

        private void LoggerCLI_NotificationEvent(string message)
        {
            Console.WriteLine($"*****{message}****");
        }
}