使用.NET和OpenCV执行线程?

使用.NET和OpenCV执行线程?,.net,c++,multithreading,static,opencv,.net,C++,Multithreading,Static,Opencv,我很难找到一个线程来处理。问题在于我的代码中的ThreadStart()部分 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* ar

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

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> ..\..\..\..\..\..\..\程序文件(x86)\OpenCV\samples\c\circle dection.cpp(130):错误C2102:“&”需要l值

1> ..\..\..\..\..\..\..\..\程序文件(x86)\OpenCV\samples\c\circle dection.cpp(130):错误C3350:'System::Threading::ThreadStart':委托构造函数需要2个参数


这里的问题是,您试图对签名不兼容的
ThreadStart
委托使用函数
ThreadStart
是一个没有参数且不返回值的委托。您正在尝试使用一个包含4个参数的方法。这行不通

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

在C++中传递参数时,最好的方法是创建一个新的类,它具有所有的参数作为字段。然后给它一个没有参数也不返回值的方法,并将其用作

ThreadStart
目标

ThreadHelper^ h = gcnew ThreadHelper();
h->Param1 = someValue;
ThreadStart^ threadDelegate = gcnew ThreadStart( h, &ThreadHelper::DoMoreWork );
ThreadStart
文档页面上有一个完整的示例