WP C++ 런타임 구성 요소가 C# WP 응용 프로그램에서 사용됩니다. C++ 런타임 구성 요소에서 C# 및 C++/CX 객체는 어떻게 관련되어 있습니까?
, 나는 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();
};
을 가지고, 나는 ICallback
를 구현 CallbackImp
을 보유하고 있습니다. 그리고 나는 다음과 같은 질문
- CB 및 닷컴 개체를 관리 한
CallbackImp cb = new CallbackImp(); WindowsPhoneRuntimeComponent com = new WindowsPhoneRuntimeComponent(); // Set callback com.SetCallback(cb); // Get dictionary IDictionary<string, object> dict = com.CreateDictionary();
을한다. 그렇다면 C++/CX 객체는 어디에 있습니까? 나는 는 (네이티브 힙에 상주) 일부 C++/CX 객체에 CB 및 닷컴 포인트를 잘 들었어요? CB 및 닷컴는 .NET GC에 의해 발표된다
- , 어떻게 C++/CX는 다음 해제되는 객체인가?
- 내가 런타임 구성 요소에 CB을 통과 CB는 또는 기본 힙 관리에 속하나요?
- dict 어디서 살고 있습니까? 누가 그것을 풀어 주겠습니까?
1. 3. 같이 WindowsPhoneRuntimeComponent의 생성자를 호출 해 있음을 숨기기 때문에 C++/CX이 있어야합니다 네이티브 힙 어딘가에있는 객체? 런타임 구성 요소 프로젝트에서 새로 참조 할 때 새롭게 생성 된 객체의 주소를 볼 수 있습니다. "객체가 서버에 소유 됨"은 무엇을 의미합니까? 2. "C++/CX 참조가 범위를 벗어납니다 "? 나는 개인적으로 cb와 com이 관리 힙에 있다고 생각하기 때문에 GC는 언제 그 파일을 공개할지 결정할 것이며 이는 C++/CX 객체로도 이어질 것입니다. – onmyway133
자신의 정신 모형을 공장. 그러나 매우 정확한 것은 아닙니다. WinRT 유형을 이해하려면 COM을 이해해야합니다. 행운을 빈다. –
http://social.msdn.microsoft.com/Forums/windowsapps/en-US/d41b7773-d85e-4d1c-97a1-2c8579da62c2/how-does-memory-allocation-work-with-native-winrt-types에 따라 -in-managed-code "WinRT 형식은 원시 힙에 만들어지며 가비지 수집되지 않습니다. 말한대로 다시 계산됩니다 .C# 또는 VB 호출자가 GC 컬렉션을 통해 예상 .NET 개체를 릴리스 할 때마다 참조 카운트가 0이되면 소멸자 (있는 경우)가 호출되고 메모리가 할당 해제됩니다 " – onmyway133