강제로 : (C++ CLI에서 작동하려면 RAII 잠금을 수행 할 방법을 찾고 있습니다.) 내가 생각해 낸 것은 :RAII가 .Net Monitor :: Enter/Exit (C++ CLI에서) 용으로 구현 될 수 있습니까?
ref class RAIIMonitor
{
RAIIMonitor();
T^ t;
public:
RAIIMonitor(T^ t_)
{
t=t_;
System::Threading::Monitor::Enter(t_);
}
~RAIIMonitor()
{
System::Threading::Monitor::Exit(t);
}
!RAIIMonitor()
{
assert(0); // you are using me wrong
}
};
사용 : 결코 그것을 할 수있는 방법이 있는지 예는 더 잘 할 수있는 방법이 있는지
//begining of some method in MyRefClass
RAIIMonitor<MyRefClass> monitor(this);
그래서 올바른 방법이, 없다
당신에게 MS 감사드립니다. :) BTW 귀하의 대답은 실제로 내 수업이 제대로 일을 의미합니다. 나는 물건이 부족하다는 것을 의미하지만, Im은 올바르게하는 것에 대해 이야기하고 있습니다. – NoSenseEtAl
제대로 처리 된 개체가 어설 션을 트리거하지 않도록 마무리 자에서 'if'문이 필요하다고 생각합니다. (나는 가비지 콜렉터가 여전히 스택 의미론을 통해 할당 된 객체를 처리한다고 생각한다.)'RAIIMonitor '또는 다른 값 유형을 시도하면 이상한 동작을 보일 수있다. 그 외에는 합리적인 것처럼 보입니다. –
@ David check # 8 http://justlikeamagic.com/2010/04/29/9-rules-about-constructors-destructors-and-finalizers/ – NoSenseEtAl