【发布时间】:2015-01-29 13:43:41
【问题描述】:
我有一个应用程序,其中命令以 x 分钟的间隔发送到串行端口。代码:
int i = 0;
do
{
// Send temperature
com.SendComMessage(Temperature[i], Command[i]);
// Start timer
System.Timers.Timer t = new System.Timers.Timer();
t.Elapsed += new TimerElapsedEventHandler();
t.Interval = Convert.ToInt32(Time[i]);
t.AutoReset = false;
t.Enabled = true;
// Tell CarbageCollector not to destroy the timer
GC.KeepAlive(t);
i++;
} while (i <= count);
我想在时间过去之前停止执行循环。
我考虑过使用线程,像这样:
System.Threading.Thread.Sleep(Convert.ToInt32(Time[i])*60);
但我可能不会在代码休眠时更新 GUI,因为串行端口接收来自设备的响应。
我怎样才能做到这一点?
【问题讨论】:
-
是计时器来查看您是否在 X 秒内没有收到回复?...或者您只是想要在您发送的命令之间有延迟?
-
@Idle_Mind 只是命令之间的延迟。
标签: c# multithreading timer