Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使计时器滴答声事件中断另一个函数C++/CLI 我是C++的新成员,我来自嵌入式C++的背景。我已经创建了一个温度控制块,可以与PC通信以设置/读取温度_C++_Events_Timer - Fatal编程技术网

如何使计时器滴答声事件中断另一个函数C++/CLI 我是C++的新成员,我来自嵌入式C++的背景。我已经创建了一个温度控制块,可以与PC通信以设置/读取温度

如何使计时器滴答声事件中断另一个函数C++/CLI 我是C++的新成员,我来自嵌入式C++的背景。我已经创建了一个温度控制块,可以与PC通信以设置/读取温度,c++,events,timer,C++,Events,Timer,我试图创建一个程序,在不同的温度下循环,每隔1秒读取读数。我使用了一个“Forms Timer”,它应该每秒钟都在计时,并创建一个“事件”,就像嵌入式C一样,应该“中断”我的BtnTestTemp_Click()函数 private: System::Void LogTempTimer_Tick(System::Object^ sender, System::EventArgs^ e) { GetTemp_Click(sender, e); tempreadingNb++;

我试图创建一个程序,在不同的温度下循环,每隔1秒读取读数。我使用了一个“Forms Timer”,它应该每秒钟都在计时,并创建一个“事件”,就像嵌入式C一样,应该“中断”我的BtnTestTemp_Click()函数

private: System::Void LogTempTimer_Tick(System::Object^  sender, System::EventArgs^  e) {
    GetTemp_Click(sender, e);
    tempreadingNb++;
}

private: System::Void BtnTestTemp_Click(System::Object^  sender, System::EventArgs^  e) {
    //SET TO ROOM TEMP
    this->TempSet->Text = "2500";
    SetTemp_Click(sender, e);
    //WAIT UNTIL 2500 +/- 1
    while ((currenttemp > 2600)||(currenttemp < 2400)) {}
}
private:System::Void log试探计时器\u勾选(System::Object^sender,System::EventArgs^e){
GetTemp_单击(发送者,e);
tempreadingNb++;
}
私有:系统::Void BtnTestTemp_单击(系统::对象^sender,系统::事件参数^e){
//设为室温
此->临时设置->Text=“2500”;
SetTemp_单击(发送者,e);
//等到2500+/-1
而((当前温度>2600)| |(当前温度<2400)){}
}
当不在我的BtnTestTemp_Click()函数中时,计时器工作正常,我可以看到它每秒调用LogTestTimer_Tick()事件。但是,在我的while循环中:

while ((currenttemp > 2600)||(currenttemp < 2400)) {}
while((当前温度>2600)| |(当前温度<2400)){}
永远不会调用LOGTELTIMER_Tick()函数,也永远不会更新当前温度

为什么在另一个函数期间不触发该事件?我应该怎么做才能让它“中断”另一个函数


谢谢。

这种计时器是为单线程应用程序设计的。即当前在按钮单击中执行的同一线程将用于执行计时器滴答声。因此,在另一个事件完成之前,它无法执行该事件


查看System.Timers中的计时器,了解可在多线程环境中使用的计时器。该类型的计时器适用于单线程应用程序。即当前在按钮单击中执行的同一线程将用于执行计时器滴答声。因此,在另一个事件完成之前,它无法执行该事件

查看System.Timers中的计时器,了解可在多线程环境中使用的内容