如何在 C++/CLI 中将结构传递给后台工作线程

发布于 2024-10-26 14:54:20 字数 748 浏览 4 评论 0原文

struct ArgumentList {
        int x;
        string text1;
};

/////////////////////////////////////////

ArgumentList arg1={12,"text123"}
WorkerThread->RunWorkerAsync(arg1);

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

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
    //...

        }
struct ArgumentList {
        int x;
        string text1;
};

/////////////////////////////////////////

ArgumentList arg1={12,"text123"}
WorkerThread->RunWorkerAsync(arg1);

I want to passed arg1 but the compiler says "error C2664: 'void System::ComponentModel::BackgroundWorker::RunWorkerAsync(System::Object ^)' : cannot convert parameter 1 from 'ArgumentList' to 'System::Object ^' "

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
    //...

        }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

在梵高的星空下 2024-11-02 14:54:20

看起来您需要使用以下方法将您的结构声明为 托管结构关键字 ref

ref struct ArgumentList {
        int x;
        string text1;
};

这样它将正确地从 RunWorkerAsync(Object) 期望

Looks like you need to declare your struct as a managed struct by using the keyword ref

ref struct ArgumentList {
        int x;
        string text1;
};

That way it will correctly be inherited from the Object type ( the base object for all managd classes ) that RunWorkerAsync(Object) expects

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文