我有一个问题,我真的很感激一点帮助。
在我的.aspx上我有四个ASP.NET Timer控件,当他们每个Ticks时我都会异步调用不同的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中,其余的Timers是相似的 - 调用不同的webservice,但有相同的事件,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 :(得分:0)
我能告诉你的关于你的问题的是我对这个计时器如何工作的理解,并在幕后发生,你可以在你的代码中进行更多调查。
当计时器勾选到您的函数的异步请求时,每个计时器都会触发它自己的请求,并且浏览器应该并行处理所有请求,所以我建议你打开firebug,看看你的计时器请求,看看它们是否是彼此依赖,每个请求都是在另一个请求之后处理,或者只是浏览器的呈现机制导致定时器延迟。