0
이 클래스 라이브러리 clr/C++ 프로젝트입니다. 클래스 A는 관리되지 않는 C++ 클래스 B managed C++입니다. C# 응용 프로그램에서 B의 객체를 만들고 해당 객체로 "void Sign"을 호출하고 C#의 StatusEvent를 catch하고 싶습니다. B :: Showsts를 A :: call_A에서 호출하려면 어떻게합니까? call_A는 B 클래스 객체의 델리 게이트에서 호출된다는 점에 유의하십시오. 미리 감사드립니다.관리되지 않는 클래스 개체에서 관리되는 클래스 함수 호출
public class A{
public:
int call_A();
};
public ref class B{
private:
A* a1;
public:
void Sign(String^ ufile);
void Showsts(string sts);
delegate void GetResult(String^);
event GetResult^ StatusEvent;
SpyrusLib(void){
a1=new A();
}
protected: ~SpyrusLib(){
delete a1;
}
private:
String^ str;
delegate int MySignDelegate(String^);
int MySign(String^ file);
void Callbacksign(IAsyncResult ^ar);
};
void B::Sign(String^ ufile){
MySignDelegate^ signDel = gcnew MySignDelegate(this, &B::MySign);
AsyncCallback^ cb = gcnew AsyncCallback(this, &B::Callbacksign);
signDel->BeginInvoke( ufile , cb, signDel);
}
int B::MySign(String^ file){
stdstr=msclr::interop::marshal_as<std::string>(file);
a1->call_A(stdstr);
}
void B::Showsts(string sts){
str = gcnew String(sts.c_str());
StatusEvent(str);
}
int A::call_A(string stat){
?-Showsts(stat);
}