【发布时间】:2011-03-15 21:58:16
【问题描述】:
我有一个 C++/CLI 应用程序,它有一个后台线程。每隔一段时间,我希望它将结果发布到主 GUI。我读过elsewhere on SO,MethodInvoker 可以为此工作,但我正在努力将语法从 C# 转换为 C++:
void UpdateProcessorTemperatures(array<float>^ temperatures)
{
MethodInvoker^ action = delegate
{
const int numOfTemps = temperatures->Length;
if( numOfTemps > 0 ) { m_txtProcessor2Temperature->Text = temperatures[0]; } else { m_txtProcessor2Temperature->Text = "N/A"; }
if( numOfTemps > 1 ) { m_txtProcessor2Temperature->Text = temperatures[1]; } else { m_txtProcessor2Temperature->Text = "N/A"; }
if( numOfTemps > 2 ) { m_txtProcessor2Temperature->Text = temperatures[2]; } else { m_txtProcessor2Temperature->Text = "N/A"; }
if( numOfTemps > 3 ) { m_txtProcessor2Temperature->Text = temperatures[3]; } else { m_txtProcessor2Temperature->Text = "N/A"; }
}
this->BeginInvoke(action);
}
...给我:
1>c:\projects\MyTemperatureReporter\Form1.h(217) : error C2065: 'delegate' : undeclared identifier
1>c:\projects\MyTemperatureReporter\Form1.h(217) : error C2143: syntax error : missing ';' before '{'
我在这里错过了什么?
【问题讨论】:
标签: .net user-interface c++-cli backgroundworker porting