Multithreading C++\CLI线程启动

Multithreading C++\CLI线程启动,multithreading,c++-cli,Multithreading,C++ Cli,我在读一本关于多线程的教程。但是,本教程是用C语言编写的。不幸的是,我的应用程序是用C++\CLI编写的。我想知道以下C++代码在C++\CLI中的等效代码: 这段C#代码使用LINQ,这让我很困惑(我是编程新手) 更新:我想制作一个进度条,可以显示一个巨大循环的计算进度,这个循环计算组合。计算循环时应用程序被冻结,这就是为什么我需要多线程 提前感谢。等效的C++/CLI代码如下: void WorkCompleted() { Thread::Sleep(5000); Messa

我在读一本关于多线程的教程。但是,本教程是用C语言编写的。不幸的是,我的应用程序是用C++\CLI编写的。我想知道以下C++代码在C++\CLI中的等效代码:

这段C#代码使用LINQ,这让我很困惑(我是编程新手)

更新:我想制作一个进度条,可以显示一个巨大循环的计算进度,这个循环计算组合。计算循环时应用程序被冻结,这就是为什么我需要多线程


提前感谢。

等效的C++/CLI代码如下:

void WorkCompleted()
{
    Thread::Sleep(5000);
    MessageBox::Show("Thread completed!");

}
void button1_Click(System::Object^  sender, System::EventArgs^  e) 
{
    Thread^ backgroundThread = gcnew Thread(gcnew ThreadStart(this, &Form1::WorkCompleted));
    backgroundThread->Start();
}

等效的C++/CLI代码如下所示:

void WorkCompleted()
{
    Thread::Sleep(5000);
    MessageBox::Show("Thread completed!");

}
void button1_Click(System::Object^  sender, System::EventArgs^  e) 
{
    Thread^ backgroundThread = gcnew Thread(gcnew ThreadStart(this, &Form1::WorkCompleted));
    backgroundThread->Start();
}

此代码不使用LINQ,它只使用lambda。将lambda替换为函数,其余变为
gcnew-Thread(gcnew-ThreadStart(&TheFunctionName))->Start()
您还必须使用
而不是
来调用静态函数。@Dan Yea,我不应该使用C++\CLI。但这是我以前制作的一个老应用程序,将所有代码更改为C将是一件乏味的事情:(丹),没有人应该在C++/CLI中开始编程新的应用程序。它将是疯狂的。但是,如果你有一个有几千或数百万行代码的旧程序,并且想用.NET UI功能重新激活它,C++ +CLI是无价的。谢谢@丹。我有个问题,如果我想在C++中使用本机C++,这会容易吗?@丹。我不反对。我只是强调了在传统应用程序中.NET嵌入时的C++的好处。想象一个解决方案:同时使用C++项目暴露.NET类和C++ + CLI项目,使用C++/CLI(ReF)对C类类进行分类(如此暴露REF类)和C++本地项目。类。此代码不使用LINQ,它只使用lambda。将lambda替换为函数,其余变为
gcnew-Thread(gcnew-ThreadStart(&TheFunctionName))->Start();
你还必须使用
而不是
来调用静态函数。@Dan Yea,我不应该使用C++\CLI。但这是我以前制作的一个旧应用程序,将所有代码更改为C会很乏味:(丹),没有人应该在C++/CLI中开始编程新的应用程序。它将是疯狂的。但是,如果你有一个有几千或数百万行代码的旧程序,并且想用.NET UI功能重新激活它,C++ +CLI是无价的。谢谢@丹。我有个问题,如果我想在C++中使用本机C++,这会容易吗?@丹。我们不反对。我只是强调了在传统的应用程序中嵌入.c++的好处。想象一个解决方案同时进行:C++项目暴露.NET类和C++ + CLI项目,对C++类(对REF类进行曝光)和C++本地项目使用C++ + CLI(REF)类进行分类。