私は、ボタンが緑色に変わったときにユーザーがクリックした速度に基づいて、ユーザーの反応時間を確認するプログラムを用意しています。私はバックグラウンドで実行するボタンをクリックした後に動作している機能が欲しいです。バックグラウンドでボタン実行操作を行う方法
私はタスクを使用すると非同期になりますが、そうでないようです。私は待っていると理解し、おそらく私はそれが何とかそれが呼び出された場所に戻るようにする必要がありますが、私は解決策を見つけるのに問題があります。
私のコードは、これまでのところ、私はあなたが求めていたものより密接に反映するためにポストを編集したコメントに基づいて、この
public partial class Reaction : Form
{
Stopwatch timer;
bool start = false;
public Reaction()
{
InitializeComponent();
button1.Text = "START";
button1.BackColor = Color.Red;
}
public async Task Test()
{
if (start)
{
timer.Stop();
TimeSpan timespan = timer.Elapsed;
string timeString = String.Format("{0:00}:{1:00}:{2:00}", timespan.Minutes, timespan.Seconds, timespan.Milliseconds/10);
MessageBox.Show(timeString);
button1.BackColor = Color.Red;
button1.Text = "START";
start = false;
}
else
{
Random rnd = new Random();
int number = rnd.Next(1, 10000);
System.Threading.Thread.Sleep(3000 + number);
timer = Stopwatch.StartNew();
button1.BackColor = Color.Green;
button1.Text = "CLICK";
start = true;
}
}
private async void button1_Click(object sender, EventArgs e)
{
button1.BackColor = Color.Red;
button1.Text = "Dont click";
await Test();
}
}
なぜ スレッドT =新しいスレッド(テスト); T.start(); – Taco2
スレッドの代わりにTask.Delay(1000)を使用する必要があります。 .Sleep –
Usin g Task.Delay(1000);問題を解決しません。 「待つ」もう一つの待ちです – Taco2