2016-04-11 20 views
0

バーコードスキャンをキャプチャして中央サーバに送信する.Net Compact Frameworkで書かれたキオスクアプリケーションがあります。このプロセスは非常に速いため、私の「WAIT」通知は表示されません。スキャンが成功したというフィードバックはユーザーにはありません。 Timeクラスを使用して2秒間コードを一時停止して、ユーザーに通知する必要があります。私はそれが正しく働くようにすることはできません。私は、Compact FrameworkのTimerクラスには、フルフレームワークが楽しむメソッドのいくつかが欠けていることがわかります。ここでtimer for Windows Embedded Compact

私のイベントの割り当てはここ

this.timer1.Tick += new EventHandler(StatusTick); 

である私のコードはここでタイマー

interval = Convert.ToInt32(x.ReadAppSetting("display_interval")); 
      this.timer1.Interval = interval; 

      this.timer1.Enabled = true; 

      while (exitFlag == false) 
      { 
       Application.DoEvents(); 
      } 

      this.timer1.Enabled = false; 

を使用することです私のTickイベントは次のとおりです。

そこCompact Frameworkのドンで
private void StatusTick(object sender, EventArgs e) 
    { 

     if (interval > 0) 
     { 
      changeStatusLabel("WAIT"); 
      labelCardNumber.Text = readerData.Text; 
      interval = interval - 1000; 
     } 
     else 
     { 
      changeStatusLabel("READY"); 
      labelCardNumber.Text = ""; 
      exitFlag = true; 

     } 
    } 

Timer.Start()メソッドとTimer.Stop()メソッドのようです。

+0

私は「中央サーバーに送信します」ですが、私の推測では、何らかの形で成功または失敗のことから通知を取得する方が良いだろうということが何であるかを知りません。 Application.DoEvents()のループ。理想的なソリューションではありません。 – user34660

+0

あなたの質問は何ですか? 'Start()'と 'Stop()'が存在しない場合は、既に解決策を提供しています( 'timer1.Enabled'を' true'と 'false'にそれぞれ設定しています)。 –

答えて

0

UIスレッドの情報を変更するには、デリゲートを使用する必要があります。 私はchangeStatusLabel()関数が何をしているのかわかりませんが、あなたがまだ持っていない場合は、代理人を試すことができます。

参照: How to update the GUI from another thread in C#?

関連する問題