我正在使用托管C ++和C#。我的以下代码有问题。
var t1 = {
x: 1
}
var t2 = {}
Object.defineProperty(t2, 'y', {
value: 2,
configurable: false,
writable: false
});
Object.setPrototypeOf(t1, t2);
t1.y = 100;
t1.y; --> returns 2
Object.defineProperty(t1, 'y', { value: 100 });
t1.y; --> return 100
当我在异步线程(UI线程)中分配//In C++, Run on background thread (not UI Thread)
while(true)
{
BitmapSource^ bitmapSource = CreateBitmap();
bitmapSource->Freeze();
CSWrapperFuntion(bitmapSource); //this is a function pointer to C#
}
//In C#, Interface Project
void CSWrapperFuntion(Object param)
{
mainWindow.Dispatcher.BeginInvoke(new Action(delegate()
{
BitmapSource bitmap = (BitmapSource)param;
if (bitmap != null)
{
//Use this bitmap to display on UI Control
}
}));
}
时,使用此位图对象是否有任何问题?
在BeginInvoke的主体中,也许Object参数超出范围,并且是GC销毁了?
我对C#的这种情况一无所知,因此我无法猜测将来会出现任何问题。
有人可以在此代码中向我展示潜在的错误吗?
非常感谢!