2010-02-18 3 views
0

나는 C# exe와 vC++ dll을 가지고있다. C#에서 callBackFunction을 만들고 있는데, whichh는 구조체를 매개 변수로 사용합니다. 내 C + +의 DLL이 구조를 채울 것입니다 그리고 다시 그것을 반환합니다.하지만 내 Exe 충돌 시간의 95 %. 내 dll 멀티 스레드 및 내 C# 그것에 backgroundWorker 있습니다. try catch catch 블록을 사용하여 예외가 있는지 검사하지만 아무런 예외도 잡히지 않습니다. 어느 누구도 내 vC++ dll에서 C# exe로 데이터를 보내는 더 좋은 방법을 제안 할 수 있습니까?C#에서 C++ 로의 콜백 함수

+1

. 매개 변수를 전달하고 C++ 콜백을 처리하는 여러 가지 방법이 있으며, 잘못 수행하면 잘못 될 수 있습니다. 또한 설명서에 나오는 내용에도 불구하고 .NET에서 관리되는 쓰레기를 C++에서 가비지 수집하는 습관이 있음을 알아 두십시오. – plinth

답변

1

:
(C#을)

namespace Test 
{ 
    public class CallbackClass 
    { 
     public void Callback(string s) 
     { 
      MessageBox.Show(s); 
     } 
    } 
} 

(C++/CLI)

당신은 예제 코드에 둘 필요가
... 
Test::CallbackClass::Callback(gcnew System::String("woof!"); 
... 
0

COM 인터페이스를 구현할 수 있으면 모든 .Net 클라이언트에서 해당 인터페이스의 메소드를 호출 할 수 있습니다.

구현의 기본 example. 이 일을해야