我有一个 ASP.NET Web 应用程序,可以通知业务客户有关可用的约会。 场景如下。
- 页面按钮单击事件处理程序将新约会保存到数据库
- 注册客户的偏好与创建的新约会相匹配
- 首选项匹配的客户将通过 Twilio 发送带有约会详细信息的 SMS 消息。
我的问题是我需要将步骤 2 和 3 与页面的执行分开。因此,一旦创建约会,以下步骤将异步传递给辅助类,该辅助类在后台线程上处理匹配和 SMS 消息传递,同时页面控件返回并将用户重定向到另一个页面。后台类方法不返回任何值(public void)。
很抱歉没有早点发布代码。
创建约会.aspx.cs
private void SaveAppointment()
{
using (var db = new EntitiesModel())
{
//code to create a new appointment
//Sending SMS messages to multiple clients
SMSHelper myhelper = new SMSHelper();
myhelper.SendApptSMS(newappt);
//control returned to the page redirect to dashboard
Response.Redirect("~/authuser/default.aspx");
}
}
smshelper.cs
public async void SendApptSMS(Appointment newappointment)
{
using (var db = new EntitiesModel())
{
//retrieve multiple clients that match preferences
foreach (var item in clients)
{
//for each client send SMS message using Twilio's REST API
}
//Thread.Sleep(10000);
}
}
我希望页面在调用异步方法后继续处理,然后在后台线程上执行。 这不会发生。 在 SMSHelper 发送完所有消息之前,不会到达 response.redirect。
希望这能解决问题。
最佳答案
为什么不在后台每分钟(左右)运行一次单独的服务或后台任务并运行 SendApptSMS() 方法?
关于c# - 使用 twilio 从 asp.net 异步发送短信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13601800/