0

これはクラス ライブラリ 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);
    }
4

1 に答える 1