winforms-c ++-调用方法

问题描述

我正在尝试实现用于从另一个线程更新文本框的invoke方法。

为此,我遵循了互联网上的一些说明/教程,但没有成功:

这是我的主窗体初始化的地方,称为MyForm.cpp:

Calc::MyForm::MyForm(){

InitializeComponent();

System::Threading::Thread ^plsInvoke = gcnew Thread(this,&Calc::initatePls);
//Thread = thread
plsInvoke->Start();
}

我要线程化的函数位于pls.cpp中,称为initatePls。

void Calc::initatePls()

{
hCommPLS = connectCom(6,115200);   
sendPls();
}

我收到的错误:

严重性代码描述项目文件行抑制状态 错误C2664'System :: Threading :: Thread :: Thread(const System :: Threading :: Thread%)':无法将参数1从'void(__cdecl )(void)'转换为'System :: Threading: :ThreadStart ^'Calc C:\ Users \ david \ OneDrive * ***** \ Calc \ MyForm.cpp 111

目标,如我所说,使用位于pls.cpp中的全局变量来更新文本框。

谢谢。

解决方法

确保包括namespace Systemnamespace System::Threading,或者每次System::Threading::Thread都写整个命名空间。

您还可以在gcnew ThreadStart中创建一个gcnew Thread以立即启动线程,以便删除threadName->Start();

示例:

using namespace System;
using namespace System::Threading;

void exampleFunction() {
    Thread^ thread1 = gcnew Thread(gcnew ThreadStart(this,&Calc::initatePls));
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...