这是我的代码
public FormMain()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false;//跨线程调用控件
DataSet tempds = dataBase.RunProcReturn("select top 1 ComName,ComRate from GsmModemParams");
myModem = new Common.Modem(tempds.Tables[0].Rows[0]["ComName"].ToString(), Convert.ToInt32(tempds.Tables[0].Rows[0]["ComRate"].ToString()));//传递串口名称与波特率
ThreadStart myTs = new ThreadStart(RSSMS);
Thread mytd = new Thread(myTs);
mytd.IsBackground = true;
mytd.Start();
}public void RSSMS()
{
while (true)
{
try
{
string stemp = myModem.TestCom();//打开串口
DataSet dsSend = GetSendSmsData();//存储要发送的短信很多条
for (int i = 0; i < dsSend.Tables[0].Rows.Count; i++)
{
string SmsRecvNO = dsSend.Tables[0].Rows[i]["SimNO"].ToString();
string SmsContent = dsSend.Tables[0].Rows[i]["SmsContent"].ToString();
blSendResult = myModem.SendSMS(SmsRecvNO, SmsContent);//发送短信
if (blSendResult)
//发送成功
else
//发送失败
LastOptime = "最后发送时间:" + DateTime.Now.ToString();
}
if (dsSend.Tables[0].Rows.Count == 0) { Thread.Sleep(1000); }
//读取短信并删除
List<Common.SMS> smsList = null;
smsList = myModem.ReadSMS();
for (int i = 0; i < smsList.Count; i++)
{
//存储短信
}
if (smsList.Count == 0) { Thread.Sleep(1000); }
}
catch
{
myModem.Close();//关闭串口
}
}
}
当我的dsSend 中有上百条短信,它就只发送短信执行blSendResult = myModem.SendSMS(SmsRecvNO, SmsContent);方法,可是上百条短信需要发送很长时间,这段时间就不会执行 smsList = myModem.ReadSMS();短信读取方法,
我想在发送短信的同时可以接收短信,这个应该怎么做啊! 我就只有35分了,下次多给点分,谢谢各位帮忙急救啊!
短信线程WinForm串口
public FormMain()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false;//跨线程调用控件
DataSet tempds = dataBase.RunProcReturn("select top 1 ComName,ComRate from GsmModemParams");
myModem = new Common.Modem(tempds.Tables[0].Rows[0]["ComName"].ToString(), Convert.ToInt32(tempds.Tables[0].Rows[0]["ComRate"].ToString()));//传递串口名称与波特率
ThreadStart myTs = new ThreadStart(RSSMS);
Thread mytd = new Thread(myTs);
mytd.IsBackground = true;
mytd.Start();
}public void RSSMS()
{
while (true)
{
try
{
string stemp = myModem.TestCom();//打开串口
DataSet dsSend = GetSendSmsData();//存储要发送的短信很多条
for (int i = 0; i < dsSend.Tables[0].Rows.Count; i++)
{
string SmsRecvNO = dsSend.Tables[0].Rows[i]["SimNO"].ToString();
string SmsContent = dsSend.Tables[0].Rows[i]["SmsContent"].ToString();
blSendResult = myModem.SendSMS(SmsRecvNO, SmsContent);//发送短信
if (blSendResult)
//发送成功
else
//发送失败
LastOptime = "最后发送时间:" + DateTime.Now.ToString();
}
if (dsSend.Tables[0].Rows.Count == 0) { Thread.Sleep(1000); }
//读取短信并删除
List<Common.SMS> smsList = null;
smsList = myModem.ReadSMS();
for (int i = 0; i < smsList.Count; i++)
{
//存储短信
}
if (smsList.Count == 0) { Thread.Sleep(1000); }
}
catch
{
myModem.Close();//关闭串口
}
}
}
当我的dsSend 中有上百条短信,它就只发送短信执行blSendResult = myModem.SendSMS(SmsRecvNO, SmsContent);方法,可是上百条短信需要发送很长时间,这段时间就不会执行 smsList = myModem.ReadSMS();短信读取方法,
我想在发送短信的同时可以接收短信,这个应该怎么做啊! 我就只有35分了,下次多给点分,谢谢各位帮忙急救啊!
短信线程WinForm串口
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货