Я пытаюсь написать проект для использования Quart.net (http://quartznet.sourceforge.net/)
создать систему планирования заданий (Quartz.NET - полнофункциональная система планирования заданий с открытым исходным кодом, которую можно использовать от самых маленьких приложений до крупномасштабных корпоративных систем).
Но я не могу использовать listbox1.items добавить в метод execute. Как можно использовать элементы управления окнами формы Quartz?
using System.Threading;
using Quartz;
using Quartz.Impl;
namespace QuartzTest1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnStart_Click(object sender, EventArgs e)
{
ISchedulerFactory schedFact = new StdSchedulerFactory();
//Yeni bir zamanlayıcı oluşturulup çalıştırılıyor
IScheduler sched = schedFact.GetScheduler();
sched.Start();
//Oluşturduğumuz görev(MyJob) hazırlanıyor
JobDetail jobDetail = new JobDetail("myJob", null, typeof(MyJob));
//Başlatıldıktan 20 sn sonra çalışacak bir SimpleTrigger oluşturuluyor.
//İlk çalışmadan sonra 10 sn arayla 5 kez daha tetiklenecek
Trigger trigger = new SimpleTrigger("myFirstTrigger",
null,
DateTime.UtcNow.AddSeconds(20),
null,
5,
TimeSpan.FromSeconds(10));
//Görev tetikleyici ile zamanlanıyor
sched.ScheduleJob(jobDetail, trigger);
//Uygulama bekletiliyor
ManualResetEvent resetEvent = new ManualResetEvent(false);
resetEvent.WaitOne();
}
}
public class MyJob :Form1, IJob
{
public void Execute(JobExecutionContext context)
{
listBox1.Invoke(new Action(delegate()
{
listBox1.Items.Add(String.Format("Görev çalıştırıldı : {0}", DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss")));
}));
}
}
}
Как использовать следующие коды:
public void Execute(JobExecutionContext context)
{
listBox1.Invoke(new Action(delegate()
{
//.....
//...
//..
//.
ОШИБКА:
InvalidOperationException: Invoke или BeginInvoke не могут быть вызваны для обработчика окна до создания аудита.