在winform中使用quartz框架,如何反馈执行的结果到界面上来?使执行的结果能够在界面上显示,是否执行成功等
解决方案 »
- 有关二级联动的问题
- 急!急!treeview绑定数据,怎么实现这样的效果呢,小女子初次做c/s模式,请大家帮忙看一下!
- 我调用 windows API 更改鼠标样式,鼠标更改很慢,怎么回事? (谢谢帮助)
- WebClient类使用GET方法发送数据的问题
- 我是新手,这个是做课件下载的·帮忙注释一下代码·特别是protected void LinkButton2_Click后面的,要很详细很详细的,谢谢各位的帮忙了
- 登录窗口的复杂应用,问题比较复杂,希望大家都来看看!!!
- 要在Asp.net中用多列的、可编辑的DropDownList???
- 怎样用C#写一个activeX control?
- 庆祝我离开计算机业 送分1000
- 如何取出一个字符串如200212092230中第四到第六个字符串?
- c#ffmpeg解码视频流问题
- c#Socket提示由于套接字没有连接并且没有提供地址,发送或接收数据的请求没有被接受。
然后在form1里定义如下
public static Write MyWrite;
void Write(object msg)
{
richTextBox1.BeginInvoke(new Action(() =>
{
richTextBox1.Text += msg.ToString() + "\n";
}));
}
并且在窗体加载的时候 执行一下
MyWrite = Write;
这个时候 就算定义好了..然后 你在
public void Execute(Quartz.IJobExecutionContext context)
{
Write("啊啊啊啊啊")
}
就行了
然后在form1里定义如下
public static Write MyWrite;
void Write(object msg)
{
richTextBox1.BeginInvoke(new Action(() =>
{
richTextBox1.Text += msg.ToString() + "\n";
}));
}
并且在窗体加载的时候 执行一下
MyWrite = Write;
这个时候 就算定义好了..然后 你在
public void Execute(Quartz.IJobExecutionContext context)
{
Write("啊啊啊啊啊")
}
就行了
提示 错误
Delegate Write是 "类型", 但此处被当作 "变量" 使用!
提示 错误
Delegate Write是 "类型", 但此处被当作 "变量" 使用!
scheduler.ListenerManager.AddJobListener
scheduler.ListenerManager.AddTriggerListener
scheduler.ListenerManager.AddSchedulerListener
{
public delegate void Write(string msg);
class ControlQueue
{
public bool update = false;
public int job_times = 0;
public Write myWrite; public void Display()
{
myWrite("job execute : "+ job_times.ToString() +" times\n");
}
}
}namespace Quartz
{ public class LoopControl
{
public bool loop;
} class ControlJob : IJob
{
public void Execute(IJobExecutionContext context)
{
ControlQueue cq = (ControlQueue)context.JobDetail.JobDataMap.Get("ControlQueue");
LoopControl loop = null; // 任务循环变量
loop = (LoopControl)context.JobDetail.JobDataMap.Get("loopControlJob"); while (loop.loop)
{
if (cq.update)
{
cq.job_times++;
Thread.Sleep(10);
cq.update = false;
}
else
Thread.Sleep(100);
}
}
}
}namespace Quartz
{
public partial class Form1 : Form
{
private ControlQueue cq;
private IScheduler sched;
private LoopControl loopControlJob; void DisplayJobtimes(string msg)
{
textBox1.BeginInvoke(new Action(() =>
{
textBox1.AppendText(msg.ToString());
}));
}
public Form1()
{
InitializeComponent(); loopControlJob = new LoopControl();
loopControlJob.loop = true; cq = new ControlQueue();
cq.myWrite = DisplayJobtimes;
ISchedulerFactory sf = new StdSchedulerFactory();
sched = sf.GetScheduler();
sched.Start();
IJobDetail job = JobBuilder.Create<ControlJob>().WithIdentity("ControlJob", "Test").StoreDurably().Build();
job.JobDataMap.Put("ControlQueue", cq);
job.JobDataMap.Put("loopControlJob", loopControlJob); ITrigger trigger = TriggerBuilder.Create().WithIdentity("ControlTrigger", "Test").StartNow().Build(); sched.ScheduleJob(job, trigger); } private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
} private void timer1_Tick(object sender, EventArgs e)
{
cq.update = true;
cq.Display();
} private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
loopControlJob.loop = false;
sched.Shutdown();
} private void button2_Click(object sender, EventArgs e)
{
timer1.Enabled = false;
} }
}