【发布时间】:2025-11-25 20:25:26
【问题描述】:
这就是我想做的:
- 有一个有一定间隔的计时器
- 在定时器回调代码中,如果满足某些条件,应该运行另一个线程
我已将我的代码放在一个由主窗体实例化的类中,并在方法调用时执行代码('StartSync()',参见示例代码)。
问题是代码运行了几秒钟但随后终止。我想我在做一些愚蠢的事情,但我真的看不出它是什么。感谢您对此提供的任何帮助。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Diagnostics;
namespace WindowsFormsApplication1
{
class Syncer
{
static bool SYNC_IN_PROGRESS;
public void StartSync()
{
SYNC_IN_PROGRESS = false;
Timer timer = new Timer(timerCallback, null, 0, 1000);
}
public void timerCallback(Object stateInfo)
{
Debug.WriteLine("Sync?");
if (!SYNC_IN_PROGRESS)
{
SYNC_IN_PROGRESS = true;
Thread thSync = new Thread(new ThreadStart(sync));
thSync.Start();
}
}
void sync()
{
Debug.WriteLine("Syncing...");
SYNC_IN_PROGRESS = false;
}
}
}
【问题讨论】:
-
为什么不运行定时器回调中的代码,而不是新线程?
-
你的线程,正如所写的,只会存活几微秒。用不可见的代码很难诊断问题。
标签: c# multithreading timer callback