如果 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线程会调用析构函数