GPSモデムを介してcomportを介して次のコードを使用してSMSを送信しています
Thread thread = null;
private void btnsend_Click(object sender, EventArgs e)
{
if (thread == null)
{
thread = new Thread(SendSms);
thread.IsBackground = true;
thread.Start();
}
}
private void Update(int i)
{
if(InvokeRequired)
{
this.BeginInvoke(new Action<int>(Update), new Object[] {i});
return;
}
using (var sp = new SerialPort("COM6"))
{
sp.Open();
sp.WriteLine("AT" + Environment.NewLine);
sp.WriteLine("AT+CMGF=1" + Environment.NewLine);
sp.WriteLine("AT+CMGS=\"" + dt2.Rows[i]["PhoneNo"] + "\"" + Environment.NewLine);
sp.WriteLine(tbsms.Text + (char)26);
if (sp.BytesToRead > 0)
{
tbsentto.Text = i + 1 + " of " + dt2.Rows.Count;
}
}
}
private void SendSms()
{
for(int i = 0; i < dt2.Rows.Count; i++)
{
Update(i);
Thread.Sleep(5000);
}
thread = null;
}
私の質問は次のとおりです。ユーザーが btnsend を押して他の受信者に SMS を送信できないように、スレッドが進行するまで btnsend を無効にしておくにはどうすればよいですか?