2017-02-02 88 views
1

在我的應用程序啓動時,我需要確保用戶設置完成,然後才允許用戶選擇「運行」按鈕啓動功能線程。我有一個Init.cs類,它運行各種檢查以確保環境設置正確,以防止在運行時發生常見錯誤。大多數這些檢查工作正常,除了以下內容:C#在啓動時檢查Settings.Default

 static void checkConfigHealth() 
    { 
     Console.WriteLine("Checking Config"); 
     Settings.Default["nullVal"] = false; 
     Console.WriteLine(Settings.Default["Email"]); //Test code 
     if (Settings.Default["Email"] == null) 
     { 
      Settings.Default["nullVal"] = true; 
     } 
     if (Settings.Default["SQL"] == null) 
     { 
      Settings.Default["nullVal"] = true; 
     } 
     if (Settings.Default["Server"] == null) 
     { 
      Settings.Default["nullVal"] = true; 
     } 
     if (Settings.Default["User"] == null) 
     { 
      Settings.Default["nullVal"] = true; 
     } 
     bool nullVal = Convert.ToBoolean(Settings.Default["nullVal"]); 
     if (nullVal) 
     { 
      Console.WriteLine("Please update the configuartion!"); 
     } 
     Console.WriteLine(Settings.Default["nullVal"]); //Test code 
    } 

它繼續,但這是基本的想法。當這個方法被調用在啓動時,我從測試代碼得到響應(假設settings.default值爲空):

「檢查配置」

//我得到了一個空白在這些地方的「電子郵件」條目會去(這是正確的,因爲我已經離開它留空的宗旨,爲測試)

//說布爾nullVal是假的(這應該是真的)

我的設置是emtpy。根據我的測試迴應,該方法被正確調用和settings.default值是空的,但它不會觸發:

if(Settings.Default["Email"] == null) 

如果我更新的配置設置和應用程序啓動後輸入任何內容,然後點擊我的運行按鈕,這些檢查再次運行,並且它們工作正常。他們只是在啓動時不工作。它的行爲好像有什麼東西(我假設'/ 0'?)

我在stackoverflow上發現了一些建議,說明我正在做什麼。是否有另一種方法來檢查設置是否爲空?對不起,如果我的問題很混亂。

+0

要claify:此次檢查的目的是設置「nullVal」爲「True」,如果用戶還沒有更新了一個設置(即當用戶第一次啓動程序,或者他/她更新設置並離開了一個字段時)。在主窗體中,當用戶選擇「運行」時,應用程序查找「nullVal」,如果它是「真」,則下一個線程不會啓動,而是用戶獲得更新配置的響應。 –

回答

0

「設置」中字符串的默認值爲空字符串,不爲空。 嘗試將狀態更改爲以下:

if(string.IsNullOrEmpty(Settings.Default["Email"]) 

代替:

if(Settings.Default["Email"] == null) 
+0

甜!謝謝。不過,我必須做出一些改變。 if(string.IsNullorEmpty(Settings.Default.Email)) 從中獲取字符串值。我很親密,但迄今爲止。再次感謝。 –