2012-11-28 35 views
3

我有一個asp.net web應用程序,通知企業客戶有關可用約會。 該場景如下。從asp.net使用twilio的異步短信

  1. 頁面按鈕單擊事件處理程序節省了新的任命到數據庫中註冊客戶端的
  2. 偏好相匹配的新的約會創建
  3. 客戶,其喜好匹配通過Twilio發送短信與約會的細節。

我的問題是,我需要從頁面執行中分離出步驟2 & 3。因此,一旦創建了預約,以下步驟將異步傳遞給輔助類,該輔助類在後臺線程處理匹配和SMS消息傳遞,而頁面控件返回並將用戶重定向到另一個頁面。後臺類方法不返回任何值(public void)。

對不起,不能提前發佈代碼。

createappointment.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。

希望能夠解決這個問題。

+0

如此多的選項 - 使用線程,事件/ mq/pubsub等 – sphair

+0

背景在asp.net中有問題。在Azure中,您可以使用Web作業。見http://curah.microsoft.com/52143/using-the-webjobs-feature-of-windows-azure-web-sites – RickAndMSFT

回答

-1

爲什麼不有一個單獨的服務或後臺任務在後臺運行一次(或多次)並運行SendApptSMS()方法?