2017-05-11 10 views
-1

現在、テキストを集めてまとめて1つの文にする関数を作っています。文章が完成したら、フォーマットされたテキストを用意した関数に送信したいと思います。タイマーがリセットされない[Xamarin forms iOS] C#

これを達成するために行ったことは、タイマーを作成して、何かが5秒以内に送信されないときに、収集したテキストでイベントを発生させることです。

しかし、私の現在のコードでは、タイマーはリセットされず、タイマーをリセットするこの期間中にテキストが送信されたとしても、イベントは5秒後に起動します。

だから、これは新しいテキストが入力されますときに呼び出される関数です。

string result = ""; 
Timer time; 
public void beginTimer(string text) 
{ 
    result = result + " " + text; 
    time.Stop(); 
    time = new Timer(5000); 
    time.Enabled = true; 
    time.AutoReset = false; 
    time.Start(); 
    time.Elapsed += new ElapsedEventHandler(timer_Elapsed); 
} 

そして、私は私の他の機能への完全なテキストを送信するイベントが発生したら:

public event EventHandler<EventArgsSentence> textChanged; 

private async void timer_Elapsed(object sender, ElapsedEventArgs e) 
{ 
    time = (Timer)sender; 
    time.Stop(); 
    time.Enabled = false; 

    textChanged.Invoke(this, new EventArgsSentence(result)); 
    result = ""; 
} 

しかし、これとこのタイマーの間にbeginTimerが呼び出されていても、タイマーはリセットされず、イベントは5秒後に常に発生します。

+0

のためにこれを試してみてくださいが複数回オブジェクト.. – MethodMan

+0

はポストを更新してから作るようには見えません(同じ問題がしかし、残っている) –

答えて

0

新しいタイマーを作成している理由は興味があるだけ停止タイマ

time.Invalidate(); 
time.Dispose(); 
time = null; 
+0

の場合私はそれが働いたと付け加えた!ありがとう。 ) 'IF(!時間= NULL) \t \t \t \t \t \t \t { \t \t \t \t \t \t \t \t time.Stop(;また、私はこれを開始ビットので、コードを再配置しました \t \t \t \t \t \t \t \t time.Dispose(); \t \t \t \t \t \t \t \t time = null; \t \t \t \t \t} –

+0

はこのコードを実行していますか? – KKRocks

+0

はい。それが私にできるようになるとすぐにアップアップします –

関連する問題