2012-07-19 119 views
1

我有一個C#應用程序,它被設計爲與Windows窗體一起運行,但現在需要作爲計劃任務運行。我有這個問題,我認爲這是因爲它應該是「無頭」的,因爲它應該沒有用戶環境的概念。該程序已被編寫爲無人值守運行,因爲它有一個/ AUTO參數,然後它將從一些默認值運行,但仍會顯示導致問題的表單。按計劃任務運行C#應用程序

我環顧四周,我認爲有一種方法可以在這種情況下抑制窗體,但我找不到如何。有誰知道我可以如何抑制窗體並允許此應用程序運行?

+2

使用'if'語句? – SLaks 2012-07-19 12:54:51

+0

重複? http://stackoverflow.com/questions/7179286/how-to-convert-my-c-sharp-winform-program-to-service-program – 2012-07-19 12:56:26

+0

向我們展示你的Program.cs文件的內容(我猜/希望你正在處理你的命令行參數)。 – 2012-07-19 12:56:29

回答

3

將計劃任務所需的邏輯從WinForms應用程序中取出並放入控制檯應用程序中。如果您可以在兩個地方重複使用邏輯,請將其移入共享庫。

+0

如果我錯了,糾正我,但沒有把WinForm窗口換成控制檯窗口...? – 2012-07-19 12:58:15

+1

是的,但只要應用程序不需要用戶輸入,控制檯窗口就可以。 – jrummell 2012-07-19 13:00:28

0

檢查/ AUTO參數是否設置,然後取決於是否。在你的Program.cs更改此:

Application.Run(new Form1()); 

Application.Run(); 

這不會顯示一個表格,你可以做任何你喜歡的其他東西。

這是最好的我可以給你沒有看到你的代碼。跳它幫助!

+0

謝謝這聽起來很有幫助。隱藏的複選框和.Run聲音目前最有希望。 – onesixtyfourth 2012-07-19 13:19:57

0

您可以告訴任務與桌面交互,在這種情況下,顯示的表單不是問題。只要你的應用程序將自行關閉,所以工作完成。

我做了一個基於表單的事情,然後想要一個計劃任務,所以寫了一個命令行前端調用基於表單的應用程序,然後將2個exes與ilmerge所以它不能弄糊塗,因爲它是一個廉價的黑客

如果您的代碼被正確編寫,你可以做一個exe前端,並使用相同的類作爲你的窗體(或DLL),並以這種方式工作。

+0

我開發了一個使用VS 2010的winform應用程序。安裝exe之後,我已將它安排在任務計劃程序中。在計劃的時間,任務顯示正在運行,但它不打開我的EXE。 plz幫助。 – dilipkumar1007 2017-10-02 16:31:37

2

將您的應用程序轉換爲控制檯模式,並檢查任務計劃程序的「常規」選項卡中的「隱藏」複選框。

這將幫助你

enter image description here

不過,如果你想使用的WinForm應用程序,那麼它的ShowOnTaskbar屬性設置爲false。

它很容易將您的winform應用程序轉換爲winform應用程序。只需轉到項目屬性並將輸出類型更改爲控制檯。但是你需要在代碼中做一些調整。

0

據我瞭解你,你不需要Forms模式了吧?

如果這是正確的,我建議您實施您的應用程序作爲服務,例如,一個WCF服務。它可以永久運行並在配置的計時器上執行您的業務邏輯。

爲了使定時器的配置變得簡單而靈活,您可以選擇註冊NCronTab。這使您可以按照45 11 * * Friday(=>「每週五在上午11:45運行」)的模式安排任務。

+0

我開發了一個使用VS 2010的winform應用程序。安裝exe之後,我已將它安排在任務計劃程序中。在計劃的時間,任務顯示正在運行,但它不打開我的EXE。 plz幫助。 – dilipkumar1007 2017-10-02 16:31:15

+0

@ dilipkumar1007:這聽起來像是一個非常不同的主題。我建議你最好打開自己的問題,並提供一些關於你想要做什麼的更多細節。 – 2017-10-04 07:33:27