[ad_1]
こんにちは、私は現在学校で C# を学んでいます。 機能する信号機システムを作成することになっていました。 すでにフェーズをザッピングできますが、別のボタンを追加したいと思います。これは、アクション間の遅延ですべてを実行します。 私の質問は次のとおりです。このようなタイマーを設定するにはどうすればよいですか?
今までの私のコード:
void Button1Click(object sender, EventArgs e) { if (panel3.BackColor == Color.Green) { panel2.BackColor = Color.Yellow; panel3.BackColor = Color.Black; panel5.BackColor = Color.Yellow; } else if (panel2.BackColor == Color.Yellow && panel1.BackColor == Color.Black) { panel1.BackColor = Color.Red; panel2.BackColor = Color.Black; panel4.BackColor = Color.Black; panel5.BackColor = Color.Black; panel6.BackColor = Color.Green; } else if (panel1.BackColor == Color.Red && panel2.BackColor == Color.Black) { panel2.BackColor = Color.Yellow; panel5.BackColor = Color.Yellow; panel6.BackColor = Color.Black; } else if (panel1.BackColor == Color.Red && panel2.BackColor == Color.Yellow) { panel1.BackColor = Color.Black; panel2.BackColor = Color.Black; panel3.BackColor = Color.Green; panel5.BackColor = Color.Black; panel4.BackColor = Color.Red; What I have tried: I already googled of course but I couldn't seem to find somebody that explains it for SharpDevelop. I saw many people using VisualStudio, but I want to do it in SharpDevelop.
解決策 1
解決策 2
考えられる解決策は、async-await を使用することです (4.5 以上の .NET Framework で)。
この簡単な例は、.NET Framework 4.6.1 で作成しました。
この場合、ボタンクリック後の「Say Hello」の待機中に winform がフリーズせず、待機中の GUI を自由に動かすことができます。 おそらく、この async-await パターンはあなたのケースに適しています。 試してみることをお勧めします、
ブラジル
// .NET Framework 4.6.1 //------------------------------- using System; using System.Collections.Generic; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private async void button1_Click(object sender, EventArgs e) { await Task.Delay(15000); MessageBox.Show("Say Hello"); } } }
[ad_2]
コメント