簡體   English   中英

使用命令行參數從批處理文件運行Windows Forms Application(C#.NET 4.0)

[英]Running Windows Forms Application (C# .NET 4.0) from batch file with Command Line Arguments

我是Silverlight / ASP.NET開發人員,試圖編寫我的第一個Windows Forms應用程序以在服務器上的后台運行,以填充數據庫。 最終希望它是Windows服務,但最初不是必需的。

我需要創建一個批處理文件來執行此應用程序的5個實例,並將URL傳遞給5個RESTful端點。 所以我發布了我的應用程序,它創建了一個setup.exe。 安裝后,我有一個項目指向

C:\\Users\\mi2dev\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Microsoft\\ ,並帶有.appref-ms文件。

我目前不確定該怎么做。 運行:

“ C:\\ Users \\ mi2dev \\ AppData \\ Roaming \\ Microsoft \\ Windows \\ Start Menu \\ Programs \\ Microsoft \\ StreamingApp.appref-ms”-“ http://www.myURL.com”短暫地拋出了一個命令窗口,但是應用程序無法運行,數據庫中不會填充數據。

我在這里想念什么?

由於您的應用程序為.exe格式。 並且使您的winform接受命令行參數(檢查main方法)也使您的Form ctor也接受參數。 然后,就像其他命令一樣,通過cmd行啟動它,但是這里僅用於導航到文件所在的目錄。

如果是批處理,請使用start命令,后跟程序名稱,然后輸入參數

很難理解應用程序內部正在發生什么。 您需要進行調試以了解接收給定參數時發生的情況。 因此,我建議調試EXE 為此,請轉到EXE項目屬性,在CommandLineArguments選擇DEBUG選項卡,然后插入參數字符串。 DEBUG運行它,希望您會發現問題。

屏幕

如果在調試后尚不清楚為什么會這樣,請回到SO :)

Silvi如果您打算從批處理文件中使用Windows窗體應用程序,並且您認為應用程序在這種模式下的行為與雙擊打開時的行為不同,通常的方法是解析命令行(參數,也可以在main方法中使用)作為參數),並避免完全加載UI。

實際上,如果您正確地編寫了應用程序,則UI僅管理UI,並且不包含數據庫操作和數據轉換的全部邏輯。

您可以做的是在Main方法內部檢查是否有命令行參數,並且如果您檢測到定義的任何特殊參數,則實際上避免甚至調用Application.Run(new Form1(...)); 並以無用戶界面的批處理模式開始工作。

您可以在批處理模式或UI模式下使用的相同邏輯可以包裝在幫助器類中(通常也稱為業務管理器或業務邏輯...這取決於),這樣就不必重復代碼,而只需UI或批處理即可很好地調用這些類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM