私はいくつかの曲線を描くC#フォームを持っています。私はランダムな値で指定された間隔でこれらの曲線を描画しようとしています。私は自分がしたいことをすることができましたが、答えられない状況があります。以下のケースでは、ケース1は、5秒間隔を使用しているにもかかわらず、非常に高速に再描画されるフォームを持っています。しかし、ケース2では、 "Invalidate();"他の部分には、コードは想定されているとおりに動作します。 その理由は何ですか? C#Timer Tickイベントワーキングプリンシパル
はケース1 ...ありがとう:
private void hizlariHesapla()
{
if (RastgeleDegerCheckBox.Checked == false)
{
// Some code blocks
}
else
{
// Some code blocks
Invalidate();
}
Hesapla(); // Not important for the case
}
private void SurekliCizdir_Tick_1(object sender, EventArgs e)
{
if (RastgeleDegerCheckBox.Checked == true)
{
hizlariHesapla();
}
}
ケース2:あなたのHesapla方法は、直接的または間接的にバックhizlariHesaplaメソッドに呼び出すことができるかのように聞こえる
private void hizlariHesapla()
{
if (RastgeleDegerCheckBox.Checked == false)
{
// Some code blocks
}
else
{
// Some code blocks
}
Hesapla(); // Not important for the case
}
private void SurekliCizdir_Tick_1(object sender, EventArgs e)
{
if (RastgeleDegerCheckBox.Checked == true)
{
hizlariHesapla();
Invalidate();
}
}
タイマーを初期化するコードを表示してください。 – Fischermaen
Visual Studioによって生成されたInitializeComponent()メソッドで初期化されます。 –
Whchの値を「間隔」に設定しましたか? – Fischermaen