こんにちは、私はタイマーに関連するいくつかの問題に足を踏み入れました。 希望の誰かが..Cで別のスレッドからタイマーを起動する#
- を助けることができる私は
- ボタン私はそのボタンをクリックしたとき、私はパラメータ化スレッド
Thread thread1 = new Thread(new ParameterizedThreadStart(execute2));
thread1.Start(externalFileParams);
- コードを開始を含むWindowsフォームを持っていますスレッド内は非常にうまく実行されます
- このスレッドの最終行で私はタイマーを開始します
。
public void execute2(Object ob)
{
if (ob is ExternalFileParams)
{
if (boolean_variable== true)
executeMyMethod();//this also executes very well if condition is true
else
{
timer1.enabled = true;
timer1.start();
}
}
}
}
5が、タイマーのTickイベントは、私はVS2008 3.5フレームワークに取り組んでいます
を解雇されていません。私は、ツールボックスからタイマーをドラッグし、300からInterval
もEnabled
真/偽 方法がtimer1_Tick(Object sender , EventArgs e)
ですが、誰も私が間違っているのものを提案することができます
これは、あなたが望むものを達成するための最良の方法であるとはほとんど考えられません。進行中のフォームを更新する必要がある長期実行タスクがある場合は、BackgroundWorkerを使用するとよい方法です。より多くの手動制御が必要な場合は、プールスレッド(ThreadPool.QueueUserWorkItemを参照)が独自のスレッドを作成するよりも優れています。 –
あなたは、ホストフォーム/コントロールのスレッド上でtimer.startを呼び出す必要がありますが、それを行うのは厄介な方法です。適切なデリゲートを呼び出すには、 'Control.BeginInvoke'を使います。 – Jodrell