2012-03-16 16 views
0

私は基本的にURLにpingを実行し、結果を記録し、必要に応じて電話を再起動し、再度実行するようスケジュールを設定する小型コンソールアプリケーションを開発しました。コンソールアプリケーションの起動時に待機カーソルを表示しない

クライアントは、アプリケーションが起動するたびに「洗濯機」アイコンが表示されている(1秒未満ですが)と訴えています。

メインメソッドの最初の行に待機カーソルが表示されませんが、待機カーソルが表示されないようにする方法はありますか?

static void Main() 
    { 
     //Hide cursor 
     IntPtr hOldCursor = SetCursor(IntPtr.Zero); 

     //Ensure EventLog table is ready 
     PrepareDatabase(); 

     tapi = new Tapi(); 
     tapi.TAPI_Open(); 

     //Ping specified URL and restart phone if required. 
     PingRestart(); 

     tapi.TAPI_Close(); 

     //Set the application to run again after the ping interval has passed 
     SystemTime systemTime = new SystemTime(DateTime.Now.AddMilliseconds(RegistryAccess.PingInterval)); 
     CeRunAppAtTime(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase, ref systemTime); 
    } 
+0

これをスレッド・タスクに変更した場合は、MREの 'WaitOne'メソッドを使用してスレッドが完了したことを通知する' ManualResetEvent'を使用します。私はこれをテストしていないので、解決策としてこれを追加したくありません。 – jp2code

答えて

1

待機カーソルを無効にする方法はありません。アプリケーションが実行される前に表示されるため、アプリケーションがそれをブロックできません。

唯一の方法は、C言語またはアセンブリ言語でコード化することです。これらの言語は.NET実行可能ファイルと比較して非常に速く起動するからです。しかし、それでも、アンチウィルスプログラムは実行前にしばらくそれをブロックする可能性があります。

+0

もう1つの選択肢は、バックグラウンドで実行中のままで、はるかに複雑なプログラムを書くことです(再起動のためにスケジューリングするのではなく)。その後、実際にアプリを起動しているときに初めて待ちカーソルが表示されます。次のようになります:** while(true){Thread.Sleep(delayMS); (tapi = new Tapi()){tapi.TAPI_Open();を使用します。 PingRestart(); tapi_TAPI_Close(); }} ** –

関連する問題