none
请教本地代码创建的WIN32原生线程中可以调用CLR中某个类的实例的虚成员函数么? RRS feed

  • 问题

  • 请教一下,本地代码创建的WIN32原生线程中可以调用CLR中某个类的实例的虚成员函数么?

    比如,我的非托管C++程序通过CreateThread创建了一个线程,这些线程中是否可以调用CLR里一个类实例的虚函数FuncA()?

    问题一:我通过CLR Hosting或者C++\CLI Wrapper已经获取到了这个类实例的指针,请问这样调用会出一些不可预知的问题么?

    问题二:这个这个CLR类实例的虚函数FuncA()可以被CLR的线程同时调用么?

    谢谢关注

    2011年11月18日 15:57

答案

  • 你好,

    事实上在native C++中host CLR,调用.NET的程序集是在C++程序开发中经常用到的技术。就像在.NET程序中P/Invoke非托管的程序集一样,我们需要注意的是申请和释放资源的问题。虚函数可以在派生类中被重写,事实上,通过host CLR并实例化了一个.NET对象,那么这个对象的成员方法都是对其可见的,就跟在CLR中使用方法一样。


    Paul Zhou [MSFT]
    MSDN Community Support | Feedback to us
    • 已标记为答案 Paul Zhou 2011年11月28日 7:49
    2011年11月21日 9:27