2015-07-21 75 views
1

我已經編寫了一個Windows服務,該服務每天處理來自服務器的文件更新。C#應用程序將數據傳遞給Windows服務

我也有一個簡單的C#應用​​程序,它有以下選擇:

安裝/卸載服務 開始/停止服務

而且2文本框與登錄按鈕。

我的想法是,在登錄按鈕上單擊,如果服務正在運行,則停止它,在OnStart方法中傳遞登錄信息,啓動它並讓服務工作(重新建立與服務器的連接等)。

我的問題是,是否有一種簡單的方法通過它的args []將文本框的登錄信息傳遞給OnStart方法,並點擊按鈕?我尋找解決方案,但他們都建議使用參數從命令行運行服務,我需要它完全從這個應用程序進行操作。

我還發現了一篇關於命名管道的文章,但我有理解它的意思。此外,該服務不需要任何其他參數傳遞,只有來自文本框的2個字符串。

編輯:將

ServiceController sc = new ServiceController("ServiceName", Environment.MachineName); 
string[] args = new string[2]; 
args[0] = txtBox1.Text; 
args[1] = txtBox2.Text; 

sc.Start(args); 

做的伎倆?

回答

1

你不能用string [0]等,但這樣的工作:

ServiceController sc = new ServiceController("ServiceName", Environment.MachineName); 
string[] args = new string[2]; 
args[0] = txtBox1.Text; 
args[1] = txtBox2.Text; 

sc.Start(args); 

你可能會需要管理員權限來啓動服務這種方式。

我不知道該項目的目標,但我也建議檢查服務Proerpties(在命令提示符上運行services.msc)。如果您查看屬性,則可以使用「開始參數」字段傳遞參數。您也可以使用「登錄」選項卡在所需的任何憑據下運行該服務,以防這些憑據可能適合您的需要。

+0

呃,我編輯了hastly編寫的字符串而不是args,但是我明白了,謝謝:)至於運行屬性和東西,我不能這麼做,這個想法是用戶只是安裝了服務並且不需要做任何事情,因爲他們不需要知道任何事情。 – Januszoff

相關問題