【发布时间】:2012-06-24 13:00:41
【问题描述】:
public class JobRunner
{
internal Timer Timer;
internal readonly IEnumerable<YuartzJob> Jobs;
public void Start()
{
this.Timer = new Timer(5000);
this.Timer.Elapsed += Timer_Elapsed;
this.Timer.Start();
}
public void Stop()
{
this.Timer.Stop();
}
internal void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
foreach (var job in Jobs)
{
MyActivator.RunJob(job);
}
}
}
public class MyActivator
{
public static void RunJob(YuartzJob job)
{
var objectHandle = Activator.CreateInstance(job.AssemblyName, job.ClassName).Unwrap();
var currentJob = (IJob)objectHandle;
currentJob.Run();
}
}
我在使用 MyActivator.RunJob(job) 的地方应该怎么做:
- 我应该使用 ThreadPool 调用 MyActivator.RunJob 吗?
- 我应该使用线程调用 MyActivator.RunJob 吗?
- 我应该使用 BackgroundWorker 调用 MyActivator.RunJob 吗?
- 不做任何事情就可以这样工作吗?
【问题讨论】:
-
您想并行运行这些作业吗?当前的解决方案在单独的线程上同步执行它们
-
@Panagiotis Kanavos :是的,我想并行运行这些作业。
-
如果您的作业耗时超过 5 秒,计时器仍会触发,作业将无限排队。
标签: .net multithreading backgroundworker threadpool task-parallel-library