使用多个线程在C ++ CLI中将项添加到列表框

时间:2018-04-18 10:14:50

标签: multithreading visual-studio c++-cli

我在Visual Studio 2015中创建了一个UI。从UI创建的头文件中,我创建了几个线程。在这个线程中,我在类中调用外部方法。然后,从这个方法我想打印结果将它们添加到UI中的列表框。 但是,它不起作用。我尝试使用Delegate,但它也没有用。

在gui.h中创建线程:

FaceCheck^ f1 = gcnew FaceCheck("hello");
System::Threading::Thread^ t1 = gcnew System::Threading::Thread(gcnew System::Threading::ThreadStart(f1, &FaceCheck::WriteText));
t1->Start();

FaceCheck^ f2 = gcnew FaceCheck("goodnight");
System::Threading::Thread^ t2 = gcnew System::Threading::Thread(gcnew System::Threading::ThreadStart(f2, &FaceCheck::WriteText));
t2->Start();

FaceCheck类(.cpp):

#include "FaceCheck.h"
#include "gui.h"

FaceCheck::FaceCheck(System::String^ text_out)
{
    text = text_out;
}
void FaceCheck::WriteText()
{
    FACE::gui::textLog->Items->Add(text);
}

然后,我将FACE::gui::textLog中的gui.h更改为public: static

我还阅读了有关检查textLog->InvokeRequired的信息,但我没有使用Delegate

1 个答案:

答案 0 :(得分:0)

我在这里找到了解决方法[link](https://msdn.microsoft.com/en-us/library/zyzhdc6b(v=vs.110).aspx