2017-02-02 12 views
1

アプリケーションの起動時に、ユーザーが機能スレッドを開始するために「実行」ボタンを選択する前に、ユーザー設定が完了していることを確認する必要があります。私はInit.csクラスを持っています。このクラスは、実行中に一般的なエラーが発生しないように環境が正しく設定されていることを確認するためにさまざまなチェックを実行します。これらのチェックの大部分は、以下を除いて正常に機能します。C#check Settings.Debault on startup

 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値が空であることを仮定して)テストコードからの応答を取得する:

「チェックコンフィグ」

//私は空白の取得しますここで[メール]エントリが行くところ(私はテストのために意図的に空白のままにしているので、これは、正しいです)

// bool nullValがfalseであると言っている(これはtrueと言うべきです)

私の設定はemtpyです。私のテストの回答によると、メソッドが正しく呼び出されるとsettings.default値が空であるが、それはトリガされません。

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

私はコンフィグ設定を更新し、アプリケーションが開始された後に何も入力しない場合は、ヒット[実行]ボタンをクリックすると、これらのチェックが再度実行され、正常に動作します。彼らは起動時にはうまく動作しません。それは何かがあるかのように動作します(私は '/ 0'と仮定していますか?)

私が行っていることを正確に行うと言っている提案が見つかりました。設定が空であるかどうかを確認する別の方法はありますか?申し訳ありませんが私の質問が混乱している場合。

+0

claifyするには:このチェックの目的は、利用者がいない場合は、「真」に「nullVal」を設定することです設定を更新しました(つまり、ユーザーが最初にプログラムを起動したとき、または設定を更新してフィールドを終了したとき)。メインフォームでは、ユーザーが「実行」を選択すると、アプリケーションは「nullVal」を調べ、「True」であれば次のスレッドは開始されず、代わりにユーザーが構成を更新する応答を取得します。 –

答えて

0

設定のstringのデフォルト値は空の文字列で、nullではありません。以下に条件を変更してみ :

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

の代わり:

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

甘い!ありがとう。私は1つの変更を加えなければなりませんでした。 if(string.IsNullorEmpty(Settings.Default.Email)) 文字列値を取得します。私はとても近かったが、それまでのところだった。再度、感謝します。 –