首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用.NET和OpenCV进行线程处理?

使用.NET和OpenCV进行线程处理?
EN

Stack Overflow用户
提问于 2009-10-25 18:24:09
回答 1查看 1.1K关注 0票数 4

我很难找到一个线程来处理OpenCV。问题在于我代码中的ThreadStart()部分。

代码语言:javascript
复制
public ref class circles
{
    public:
        static void circleFind(bool isPhoto, const char *  windowName1, const char *  windowName2, const char * photoName)
        {(stuff)}
};

int main(int argc, char* argv[])
{
    const char *windowName1;
    const char *windowName2;
    const char *photoName;

    windowName1 = "Find Circles";
    windowName2 = "Gray";
    photoName = "Colonies 3.jpg";

    bool isPhoto = false;

    //circles(isPhoto, windowName1, windowName2, photoName);
    Thread^ circleThread = gcnew Thread(
        gcnew ThreadStart (&circles::circleFind(isPhoto, windowName1, windowName2, photoName) ));
    circleThread->Start();

    area(isPhoto, photoName);

    return 0;
}

这不是所有的代码,而是重要的部分。我所犯的错误是:

1>..............\Program文件(X86)\OpenCV\samples\c\循环dection.cpp(130):错误C2102:'&‘要求l-值 1>..............\Program文件(X86)\OpenCV\dection.cpp\c\循环dection.cpp(130):错误C3350:'System::Threading::ThreadStart‘:委托构造函数需要2个参数(S)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-10-25 18:28:14

这里的问题是,您试图为具有不兼容签名的ThreadStart委托使用一个函数。ThreadStart是一个委托,它没有参数,也不返回值。不过,您正在尝试使用一种使用4个参数的方法。这不管用。

您需要传递一个不带参数的方法。

要在C++中传递参数,最好的方法是创建一个将所有参数都作为字段的新类。然后给它一个没有参数且不返回值的方法,并使用它作为ThreadStart目标。

代码语言:javascript
复制
ThreadHelper^ h = gcnew ThreadHelper();
h->Param1 = someValue;
ThreadStart^ threadDelegate = gcnew ThreadStart( h, &ThreadHelper::DoMoreWork );

ThreadStart文档页面中有一个完整的示例。

  • http://msdn.microsoft.com/en-us/library/system.threading.threadstart.aspx
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1621629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档