2011-07-25 47 views
1

我有一個問題,我真的很感激一點幫助。parralel ASP.NET定時器控件

在我的.aspx上,我有四個ASP.NET計時器控件,當它們中的每一個都打開時,我會調用不同的Web服務方法,以返回一些照片。我在更新面板中有一張圖片,並在獲取照片時將其更新爲src。我正在使用jQuery lightBox插件來預覽圖像。

問題是:我想定時器在同一時間(同時)工作。因此,在頁面加載,幾秒鐘後應該會出現每個定時器的滴答聲(並行,在同一時間更少)。兩個定時器都有相同的時間間隔,所以它應該可以工作,但實際上我注意到第二個定時器僅在第一個Web服務回調出現後纔會打勾,第三個定時器在第二個Web服務回調出現後打勾。所有這些都是線性的,而不是平行的。

任何解決方案如何將其同時修改爲Tick?

我的.aspx:

<center> 
    <asp:Timer runat="server" ID="UpdateTimer1" OnTick="UpdateTimer1_Tick" /> 
    <asp:UpdatePanel runat="server" ID="TimedPanel2" UpdateMode="Conditional"> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="UpdateTimer1" EventName="Tick" /> 
     </Triggers> 
     <ContentTemplate> 
      <asp:Literal runat="server" ID="Ltr1" /> 
      <div id="div1" runat="server"> 
       <img alt="" id="img1" runat="server" style="width: 85%; height: 85%" /> 
      </div> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
</center>  

我在.aspx.cs一個定時器,定時器的其餘部分類似於 - 調用Web服務不同,但具有相同的事件,updateTimer_Ticks等:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
     { 
     UpdateTimer1.Interval = 3000; 
     { 
} 

protected void UpdateTimer1_Tick(object sender, EventArgs e) 
{ 
    AsynchGetPhoto();  
} 


public void AsynchGetPhoto() 
{ 
    WS.Service Service = new WS.Service(); 

    Service.getPhotoCompleted += new Service.getPhotoCompletedEventHandler(PhotoCompleted); 
    Service.getPhotoAsync(); 
} 


public void PhotoCompleted(object sender, WS.Service.getPhotoCompletedEventArgs args) 
{ 
    img1.Attributes.Add("src", "data:image/jpg;base64," + args.Result); 
} 

回答

0

我可以告訴你關於你的問題的是我對這個計時器是如何工作和發生在場景後面的理解,你可以在你的代碼中調查更多。

當計時器爲你的函數打一個異步請求時,每個計時器都會觸發它自己的請求,瀏覽器應該並行處理所有請求,所以我建議你打開螢火蟲並查看你的計時器請求,看看是否它們依賴於彼此,並且每個請求都在另一個之後處理,或者它只是瀏覽器的渲染機制,導致定時器延遲。