C# WP アプリケーションによって消費される WP C++ ランタイム コンポーネントがあります。
C++ ランタイム コンポーネントでは、
public interface class ICallback
{
public:
virtual void DoSomething();
};
public ref class WindowsPhoneRuntimeComponent sealed
{
public:
WindowsPhoneRuntimeComponent();
void SetCallback(ICallback ^callback);
IMap<Platform::String^, Platform::Object^>^ CreateDictionary();
};
C# アプリケーションでは
CallbackImp
、 を実装していますICallback
。それから私はします
CallbackImp cb = new CallbackImp ();
WindowsPhoneRuntimeComponent com = new WindowsPhoneRuntimeComponent();
// Set callback
com.SetCallback(cb);
// Get dictionary
IDictionary<string, object> dict = com.CreateDictionary();
次の質問があります
- cbとcomは管理対象オブジェクトです。では、C++/CX オブジェクトはどこにあるのでしょうか? cbとcomがいくつかの C++/CX オブジェクト (ネイティブ ヒープ上にある) を指していると聞きましたよね?
- cbとcomが .NET GC によって解放される場合、C++/CX オブジェクトはどのように解放されますか?
- cbをランタイム コンポーネントに渡す場合、 cbはマネージド ヒープまたはネイティブ ヒープのどちらに属しますか?
- dictはどこにありますか? 誰がそれを解放しますか?