System.Threading.Timer 线程计时器:
5个Timer对象:
Timer timer1 = new Timer(new TimerCallback(Proc1),null,0,100)
Timer timer2 = new Timer(new TimerCallback(Proc2),null,0,100)
Timer timer3 = new Timer(new TimerCallback(Proc3),null,0,100)
Timer timer4 = new Timer(new TimerCallback(Proc4),null,0,100)
Timer timer5= new Timer(new TimerCallback(Proc5),null,0,100)
程序在PC机上运行没有任何问题,
但是移到HP服务器上 运行一段时间都是正常的,但是线程数不断增减,过几分钟,程序就停止了
解决办法:
1. 充分压缩每个TimerCallback的处理时间,这种做法需要修改大篇的程序,因为系统在用,修改失败,非常不好办;
2. 使用服务器计时器 System.Timers.Timer ,他也是多线程的;
或者使用System.Forms.Timer , 他与用户UI共用一个进程
3.使用异步调用方式
异步编程主要是针对某些耗时的操作、无需和用户交互、只执行一次无需返回结果等的操作。
用Timer不停的触发,太频繁又耗时,线程池肯定玩完。
如果你的本意不是要定时的不停的调用Proc1/Proc2/Proc3/Proc4/Proc5,而是要一直不停的开着线程分别调用Proc1/Proc2/Proc3/Proc4/Proc5,开五个线程,死循环,不停的处理就可以了,处理一次以后,适当的休眠,保证所有线程都能运行,如:
private void Proc1()
{
while(flag) //这样可以在其他地方作某个动作,修改flag=false,使线程停下来
{....}
}
改为thread1=new thread(new threadstart(proc1))
thread1.start()的形式吧,然后把proc1的代码改为死循环:
while(true)
{
//原来proc1处理代码
Thread.Sleep(100); //等待100毫秒
}
记得程序退出时关闭线程 thread1.close();
分享到:
相关推荐
在"定时器问题.docx"文档中,可能包含了具体的定时器使用示例、错误案例及解决方案,建议阅读以获取更详细的解答。 总结,理解定时器的工作原理、选择合适的定时器类型以及妥善处理定时器带来的问题,都是IT专业...
6. 混合开发中的定时器问题: - 当在H5环境下,uni-app的定时器与原生浏览器的定时器并无太大区别,但在小程序环境中,需要考虑其特有的运行机制。 - 在App端,由于涉及到原生插件的交互,有时可能需要借助uni-app...
总结来说,解决Android中的定时器问题,关键在于理解Android的UI更新机制,合理使用线程,以及确保良好的定时器管理。通过优化定时器的使用,可以避免图片闪烁、错位和时间不同步等问题,提高用户界面的流畅性和应用...
Java定时器问题实例解析主要关注的是如何在Java中创建一个简单的定时器系统。在这个系统中,定时器的主要功能包括添加定时器、取消定时器以及定时器检查。下面将详细解释这些概念并分析给出的代码。 1. **添加...
然而,如果不妥善管理,定时器可能会引发一些问题,比如多次调用定时器导致叠加,以及定时器无法清除。本文将详细讨论这些问题,并提供一个基于`js class`的解决方案。 首先,让我们理解为什么会出现定时器叠加问题...
1. 初始化定时器:配置定时器的工作模式,如自由运行或捕获模式,设置预分频值以确定计数频率,然后加载初值,启动定时器。 2. 开启中断:在处理器的中断控制器中,为定时器中断设置使能标志,允许定时器中断请求。 ...
在标题中提到的问题是关于如何正确停止定时器。虽然看似简单,但如果不正确地停止,定时器可能仍然继续触发事件。对于 `System.Timers.Timer`,停止定时器的方法是调用 `Stop` 方法,这将取消定时器的下次触发。对于...
### 应用笔记LAT1299+定时器不按设定超时产生中断 #### 1. 引言 在嵌入式系统开发过程中,定时器的正确...通过本次对STM32定时器问题的深入探究,不仅解决了客户的实际问题,也为其他开发者提供了宝贵的经验和教训。
3. 异常处理:考虑在程序中加入异常处理机制,防止因定时器问题导致的程序中断。 通过理解并熟练运用定时器,可以显著提升工业机器人程序的灵活性和智能化程度,使其更好地适应各种生产环境和任务需求。这份“工业...
单片机多定时器软件设计是为了解决在51单片机中普遍存在的硬件定时器资源不足的问题。51单片机作为一种经典的微控制器,其内部通常配备有2到3个定时器,如Timer0、Timer1和Timer2。然而,在实际应用中,我们可能需要...
关于JS定时器(setTimeout setInterval)定时不准问题1 在JavaScript中,setTimeout和setInterval是两个基本的定时器函数,用于实现延迟执行或循环执行某个函数。然而,这两个函数在执行时往往和我们设置的延迟时间...
在上述讨论中,用户遇到的问题是如何在定时器运行过程中通过触摸屏动态修改定时器的时间设定值。根据讨论内容,我们可以得出以下关键知识点: 1. **定时器设定值的地址**: 定时器的设定值通常存储在一个特定的...
6. **故障处理**:确保有适当的错误检查和恢复机制,以应对可能的通信错误或定时器问题。 这个测试程序的目的是验证STM32F030CCT6的定时器和串口功能是否正常工作,同时提供了一个基础框架,以便在实际项目中进行...
8. **故障排查和调试技巧**:教程可能涵盖了一些诊断和修复定时器问题的方法,这对于开发者来说是非常实用的技能。 综上所述,这个压缩包是一个宝贵的教育资源,对于理解和熟练使用DragonChip芯片的定时器功能非常...
然而,这也带来了挑战,如增加软件复杂性,处理中断服务的效率,以及正确维护定时器状态的同步等问题。 在实际应用中,开发者需要根据系统需求和资源限制选择合适的方法。例如,在RTOS中,某些系统可能会提供内置的...
而在WPF中,你可以在ViewModel或代码-behind文件中创建和管理定时器,并使用`DispatcherTimer`来确保定时器回调在UI线程上执行,避免跨线程访问UI元素的问题。例如: ```csharp public class ViewModel : ...
在常规的QT和Windows系统中,内置的定时器在处理毫秒级别的延时时可能存在精度不足的问题,这可能会影响到一些对时间精确度要求极高的应用,比如游戏引擎、实时数据处理或精密算法的实现。 QT库提供了QTimer类作为...
6. **并发与同步**:在多线程环境下,虚拟定时器的实现需要考虑线程安全问题,可能需要使用锁或其他同步机制来防止数据竞争。 7. **可扩展性与灵活性**:好的虚拟定时器设计应该允许添加新功能,如暂停、恢复、取消...
6. **CCS开发环境**:使用Code Composer Studio (CCS)作为开发工具时,可以通过IDE内的集成调试器进行代码调试,观察定时器状态和变量变化,便于问题定位。 总之,TMS320F2812的定时器1和定时器2是实现各种定时、...
这些问题在Spring框架中得到了改善。 Spring定时器,也称为Spring的`@Scheduled`注解和`TaskScheduler`接口,提供了更强大且灵活的定时任务管理。Spring使用`@Configuration`类配合`@EnableScheduling`注解开启定时...