2016-11-16 8 views
-3

DateTime情報を更新して一致するようにラベルのテキストを設定するコードをループするC#プログラムを作成しました。しかし、私がそれを実行すると、フォームは表示されません。なぜこれが起こるのですか?フォームを表示させるにはどうしたらいいですか?C#Windowsフォームアプリケーションで無限ループを作成するには

は、これは私のコードです:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Windows.Forms; 

    namespace Clock 
    { 
     static class Program 
     { 
      /// <summary> 
      /// The main entry point for the application. 
      /// </summary> 
      [STAThread] 
      static void Main() 
      { 
       Application.EnableVisualStyles(); 
       Application.SetCompatibleTextRenderingDefault(false); 
       Application.Run(new clock()); 
      } 
     } 
    } 

私のインデントを無視(または右であってもなくてもよいが、プログラムに正しいです)私が間違っているの何を、と私はそれをどのように修正するのですか?

ありがとうございます!あなたは無限ループとUIスレッドをブロックしているよう

ローガンSlowik

+1

最善の方法を使用して検討することは、ライン上にブレークポイントを置くことが考えられます 'Application.Run(新しいクロック())'と見ますそれは – phil652

+2

あなたの問題は、提供されたコードにありません。 – series0ne

+1

そしてタイトル質問に答えて... while(true){...} – series0ne

答えて

2

は思えます。 asyncを利用してUIをブロックしないようにすることができます。Form_Loadメソッドでこのメソッドを呼び出すだけです。あなたも達した場合InfiniteLoop();

async void InfiniteLoop() 
{ 
    while(true) 
    { 
     await Task.Delay(100); 
     this.Text = DateTime.Now.ToString(); 
    } 
} 

ます。また、これをデバッグするTimer

関連する問題