큐를 사용하여 코드의 여러 독립 블록간에 공유되는 직렬 포트에 대한 액세스를 동기화하려고합니다. 모든 블록은 필요한 경우 대기열에 추가되고 직렬 포트에서 정확히 하나의 원자 조작을 처리하는 콜백 기능을 제공합니다. 그러면 타이머가 주기적으로 간섭을 일으키지 않고 모든 보류중인 작업을 실행합니다.C++/CLI : 멤버 함수 포인터 큐
저는 비교적 C++/CLI 프로그래밍에 익숙하지 않기 때문에 시스템 :: Collections :: Queue을 작성하고 일부 문자열을 대기열에 추가했습니다. 하지만 내 인생에서 내 콜백 함수 (void Test())에 대한 포인터를 사용하여 동일한 작업을 수행하는 방법을 파악할 수 없습니다.
집중적으로 봤지만 가장 간단한 예조차도 제대로 작동하지 않았습니다. 이 모든 위임자, Boost, Marshal, gcnew 물건들이 나에게 지금 당황 스럽다.
Microsoft Visual C++ 2010 Express를 사용하고 있습니다. 도움을 받으실 수 있기를 바랍니다. 독일에서
감사합니다,
폴 .NET/CLR 세계에서
저는 대개 대리자와 공상 콜백을 직접 사용하지 않고 상속을 통한 콜백을 권장합니다. 관리되는/관리되지 않는 레이어를 트래버스해야하는 경우 C++/CLI에서 래퍼를 작성하는 것이 그리 어렵지 않습니다. 중간 수준의 콜백 레이어로 작동하여 호출을 관리되는 환경에 전달합니다. 적어도 나는 펑터 (functor)와 같은 사람들에게 마샬링 (marshalling)하는 것에 대해 배우는 것보다 쉬울 것이라고 생각한다. – Ian