2013-01-23 170 views
0

我知道您將Quartz解決方案編譯爲可作爲Windows服務運行的exe文件。而且這個Quartz服務器以某種方式運行作業。我沒有得到的是,我在哪裏放置了所有工作代碼,這些代碼實際上完成了這項工作?比方說,我希望我的「工作」調用存儲過程,或者每小時調用一次Web服務。或者如果我有我想要執行的本機VB代碼呢? (而且我不想創建另一個獨立的VB應用程序,它可以從命令行調用。)所有這些類型的作業配置將被存儲,編碼和配置的位置並不明顯。在Quartz.Net中運行作業

回答

1

我建議你先閱讀教程。
你可以在Jay Vilalta的blog找到很多有用的信息。

Getting Started With Quartz.Net: Part 1
Getting Started With Quartz.Net: Part 2
Getting Started With Quartz.Net: Part 3

Scheduling Jobs Programmatically in Quartz.Net 1.0

Scheduling Jobs Programmatically in Quartz.Net 2.0

,然後你可以看看github code,並嘗試examples這是非常有據可查的。

UPDATE

服務器是調度。
這是一個不斷運行的Windows服務應用程序,可以運行您使用客戶端應用程序安排的工作。
你甚至可以像我一樣編寫自己的服務器(Windows服務),因爲我不想使用遠程處理與該層交談。

您可以決定安排和運行在一個控制檯應用程序的工作(我不建議) 用幾行代碼:

class Program 
{ 
    public static StdSchedulerFactory SchedulerFactory; 
    public static IScheduler Scheduler; 

    static void Main(string[] args) 
    { 
     SchedulerFactory = new StdSchedulerFactory(); 
     Scheduler = SchedulerFactory.GetScheduler(); 

     var simpleTrigger = TriggerBuilder.Create() 
       .WithIdentity("Trigger1", "GenericGroup") 
       .StartNow() 
       .WithSimpleSchedule(x => x.RepeatForever().WithIntervalInSeconds(5)) 
       .Build(); 

     var simpleJob = JobBuilder.Create<SimpleJob>() 
            .WithIdentity("simpleJob", "GenericGroup") 
            .Build(); 

     Scheduler.ScheduleJob(simpleJob, simpleTrigger); 

     Console.WriteLine("Scheduler started"); 

     Scheduler.Start(); 

     Console.WriteLine("Running jobs ..."); 

     Console.ReadLine(); 

     Scheduler.Shutdown(waitForJobsToComplete: false); 

     Console.WriteLine("Shutdown scheduler!"); 

    } 
} 

這是工作:

public class SimpleJob : IJob 
{ 
    public virtual void Execute(IJobExecutionContext context) 
    { 
     JobKey jobKey = context.JobDetail.Key; 
     Console.WriteLine("{0} Executing job {1} ", DateTime.Now.ToString(), jobKey.Name); 
    } 
} 

你可以下載一個測試項目hereVerySimpleQuartzApp)。

上面的應用程序不存儲觸發器/作業信息。

您可以決定是否要將作業/觸發器的信息保存在XML文件中,如herehere所述。
或者您可以將作業/觸發器存儲在database中,以便調度程序(通常是Windows服務)可以讀取這些信息並運行作業。

如果您正在尋找一個可以與服務器進行通信(通過遠程處理)並安排作業並運行它的示例,則可以使用this

有幾個開源項目(經理),您可以使用它來啓動/停止或計劃作業。閱讀我的答案here

+0

謝謝,我讀過發佈之前的所有內容。我看到的唯一實際例子是如何從命令行運行單獨的EXE文件,這是我不想做的事情。所有的代碼示例...你把代碼放在哪裏?在石英解決方案本身?簡單調用Web服務怎麼樣?我是否必須構建一個完整的應用才能調用該服務?這是我在所有教程中找不到的實際實現細節。 –

+0

我已經更新了我的答案。希望它有幫助。 – LeftyX

+0

非常有幫助!我快到了。所以我有你說的調度器。我可以在某處使用客戶端的方式定義日程安排,作業等。但是我在哪裏放置了工作的實際工作代碼?我沒有看到xml作業會告訴調度程序究竟要運行什麼。我把DLL放在什麼地方?另外,每小時一次簡單的Web服務調用又如何?我需要一個完整的迷你exe或dll來實現簡單的事情嗎? –