これはクラス ライブラリ clr/c++ プロジェクトです。クラス A はアンマネージド c++、クラス B マネージド c++ です。C# アプリケーションから B のオブジェクトを作成し、そのオブジェクトで "void Sign" を呼び出し、C# で StatusEvent をキャッチしたいと考えています。これを達成するために A::call_A から B::Showsts を呼び出す方法は? 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);
}