C++ cli 如何在C++/CLI

C++ cli 如何在C++/CLI,c++-cli,arguments,backgroundworker,C++ Cli,Arguments,Backgroundworker,我想传递arg1,但编译器说“错误C2664:'void System::ComponentModel::BackgroundWorker::RunWorkerAsync(System::Object^'):无法将参数1从'ArgumentList'转换为'System::Object^'” 看起来您需要使用关键字ref System::Void backgroundWorker2_DoWork(System::Object^ sender, System::ComponentModel::D

我想传递arg1,但编译器说“错误C2664:'void System::ComponentModel::BackgroundWorker::RunWorkerAsync(System::Object^'):无法将参数1从'ArgumentList'转换为'System::Object^'”


看起来您需要使用关键字ref

System::Void backgroundWorker2_DoWork(System::Object^  sender, System::ComponentModel::DoWorkEventArgs^  e) {
    //Do stuff with e->Argument
    ArgumentList passedarg=(ArgumentList)e->argument; //'type cast' : cannot convert from 'System::Object ^' to 'ArgumentList'
    int y=passedarg.x
    string text2=passedarg.text1
    //...

        }

这样,它将正确地从对象类型(所有managd类的基本对象)继承,该对象类型要求使用关键字ref

System::Void backgroundWorker2_DoWork(System::Object^  sender, System::ComponentModel::DoWorkEventArgs^  e) {
    //Do stuff with e->Argument
    ArgumentList passedarg=(ArgumentList)e->argument; //'type cast' : cannot convert from 'System::Object ^' to 'ArgumentList'
    int y=passedarg.x
    string text2=passedarg.text1
    //...

        }

这样,它将正确地继承对象类型(所有管理类的基础对象),期望

这不是大多数.NET程序员会考虑的“托管结构”。这将是“值结构”或“值类”。但是,在这种情况下,引用类型可能更好。这不是大多数.NET程序员都会考虑的“托管结构”。这将是“值结构”或“值类”。不过,在本例中,引用类型可能更好。这是
std::string
?你将跳过一些箍,以便使它与 BuffWorksWorks/Cuff>匹配,考虑使用<代码> Stry::String ^ < /代码>。那是<代码> STD::String < /代码>吗?你将跳过一些箍,以便使它与 BuffWorksWorks/Cuff>匹配,考虑使用<代码> Stry::String ^ < /Cord>。
ref struct ArgumentList {
        int x;
        string text1;
};