timer控件自动停止问题

System.Threading.Timer timer 定时器用上一段时间就会自动停止?

解决办法:
因为需要一直保持对timer的引用,要不然它会被回收。

protected void SendMsg(object sender)
{
	System.Threading.Timer timer = new System.Threading.Timer(testTime, this, 0, 60000);
}

像上面这样,定义在方法里的是局部变量,会被回收,需要定义成全局变量。
C#又没有全局变量这一说,
需要定义成静态变量

public class test
{
	private static System.Threading.Timer timer;
	
	protected void BtnStart_Click(object sender, EventArgs e)
  {
  	TimerCallback testTime = new TimerCallback(SendMsg);
    timer = new System.Threading.Timer(testTime, this, 0, 1000);
  }
  
  protected void SendMsg(object sender)
  {
  	//执行代码
  }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是用 C# 中的 Timer 件实现每隔五秒自动录音的代码示例: ```csharp using System; using System.Media; using System.Windows.Forms; namespace AutoRecordSystem { public partial class MainForm : Form { private Timer timer; private SoundRecorder soundRecorder; public MainForm() { InitializeComponent(); // 初始化 Timer timer = new Timer(); timer.Interval = 5000; // 设置定时器时间间隔为 5 秒 timer.Tick += Timer_Tick; // 绑定 Tick 事件处理方法 // 初始化 SoundRecorder 类 soundRecorder = new SoundRecorder(); } // 开始录音按钮的 Click 事件处理方法 private void btnStartRecord_Click(object sender, EventArgs e) { timer.Start(); // 启动定时器 } // 停止录音按钮的 Click 事件处理方法 private void btnStopRecord_Click(object sender, EventArgs e) { timer.Stop(); // 停止定时器 } // 定时器 Tick 事件处理方法 private void Timer_Tick(object sender, EventArgs e) { soundRecorder.StartRecord(); // 开始录音 } } // 录音类 public class SoundRecorder { private SoundPlayer soundPlayer; private string filePath; public SoundRecorder() { // 设置录音文件路径 filePath = "record.wav"; } // 开始录音方法 public void StartRecord() { soundPlayer = new SoundPlayer(); soundPlayer.SoundLocation = filePath; soundPlayer.Load(); // 加载录音文件 soundPlayer.Play(); // 开始录音 } } } ``` 上述代码中,我们先创建了一个 Timer 件和一个 SoundRecorder 类。在 MainForm 类的构造函数中,我们初始化了这两个对象,并将 Timer 件的 Tick 事件绑定到 Timer_Tick 方法上。在开始录音按钮的 Click 事件处理方法中,我们启动了定时器;在停止录音按钮的 Click 事件处理方法中,我们停止了定时器。 当定时器的 Tick 事件被触发时,就会调用 Timer_Tick 方法,该方法中调用了 SoundRecorder 类中的 StartRecord 方法,从而开始录音。 请注意,上述代码仅供参考,实际应用中还需要根据具体需求进行修改和完善。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值