如果 C++/CX class 的对象是 C# 对象中的一个字段,它在哪个线程上被销毁?
On which thread does an object of C++/CX class get destroyed, if it is a field inside a C# object?
有一个 C++/CX WinRT 组件 class CppCx:
public ref class CppCx sealed {
...
}
还有一个 C# class CSharp 包含 CppCx:
类型的字段
public class CSharp {
...
private CppCx theField;
...
}
我知道 CSharp 类型的对象的内存是在 GC 的线程上收集的,但是在哪个线程上执行 theField 的析构函数接到电话了吗?
出于线程安全原因,这很重要 - 例如theField 可以保存在后台线程上访问的本机 C++ 对象。
在将 "destroy" 最后引用该 WinRT 组件的线程上。
如果是GC线程,那么GC线程会调用析构函数
有一个 C++/CX WinRT 组件 class CppCx:
public ref class CppCx sealed {
...
}
还有一个 C# class CSharp 包含 CppCx:
类型的字段public class CSharp {
...
private CppCx theField;
...
}
我知道 CSharp 类型的对象的内存是在 GC 的线程上收集的,但是在哪个线程上执行 theField 的析构函数接到电话了吗?
出于线程安全原因,这很重要 - 例如theField 可以保存在后台线程上访问的本机 C++ 对象。
在将 "destroy" 最后引用该 WinRT 组件的线程上。
如果是GC线程,那么GC线程会调用析构函数