- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个更新面板,其中包含一个下拉列表,一旦页面完成加载,它将去并用最新数据填充下拉列表。数据抓取最多可能需要 3 分钟。我可以选择让用户“取消”请求并只使用最新版本的数据吗?
在更新面板中,我有一个未绑定(bind)的下拉列表(在设计时)。页面完成呈现后,我在 updatepanel 中调用 button.click 事件以获取数据:
private void RefreshDDL()
{
hidAction.Value = "";
ddlCampaigns.DataSource = myDataSource;
ddlCampaigns.DataTextField = "Value";
ddlCampaigns.DataValueField = "Key";
ddlCampaigns.DataBind();
ddlCampaigns.Visible = true;
pnlDetails.Attributes.CssStyle.Clear();
pnlPleaseWait.Visible = false;
btnOK.Enabled = true;
}
对象“myDataSource”是我创建的一个对象,它继承了IEnumarable 并且有一个公开的public List<DictionaryEntry>
。这就是“键”和“值”发挥作用的地方。
调用构造函数时,它会转到网络服务并获取我要用于下拉列表的数据。此提取需要将近 3 分钟才能完成,然后将其存储到我的数据库中。然后我获取数据库表并填充 public List<DictionaryEntry>
,然后返回到更新面板进行消费。
架构为获取(其第三方)工作的方式是我为数据对象发出请求(通过网络服务)。它立即返回结果的唯一标识符。然后我使用服务中的另一种方法并传入唯一 ID 来检查数据的状态。我每 10 秒循环检查一次。一旦它返回“完成”消息,我就使用相同的唯一 ID 来获取实际数据:
private void RefreshList()
{
MyProxy proxyRequest = new MyProxy ();
List<string> myList= new List<string>();
if (UpdateNeeded())
{
ProgramManagement.ThirdPartyServiceApi.runReport report = new ProgramManagement.ThirdPartyServiceApi.runReport();
report.reportName = "MyData";
try
{
ProgramManagement.ThirdPartyServiceApi.runReportResponse response = proxyRequest.runReport(report);
while (!ReportComplete(response.@return))
{
System.Threading.Thread.Sleep(10000);
}
StoreList(GetReport(response.@return));
}
catch (SoapException ex)
{
if (ex.Message == TOO_MANY_REQUESTS)
{
//display a message maybe?
}
}
}
AddDataToList();
}
有什么办法可以中途停止这个过程吗?我想我想在 while 循环中放一个齿轮来阻止它。
感谢阅读。
最佳答案
可以调用.abortPostBack();
取消Ajax请求
function CancelPostBack() {
var objMan = Sys.WebForms.PageRequestManager.getInstance();
if (objMan.get_isInAsyncPostBack())
objMan.abortPostBack();
}
详情看http://www.codedigest.com/Articles/ASPNETAJAX/125_Using_UpdateProgress_Control_Effectively.aspx
关于javascript - 我可以 "cancel"更新面板中发生的长时间运行的进程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6252288/
我有一个独立的 Thread 应用程序。这是一个等待消息的监听器,当消息到达时执行一些操作,其中我必须将消息保存在数据库中。但我遇到了问题,因为如果我运行应用程序并“手动发送消息”,一切都会正常工作,
我有以下php代码: sleep(65); $query = "UPDATE database.table SET XXXXXXX = XXXXXXX - ".$YYYYYY." WHERE
我正在开发一个业余爱好应用程序。它在主布局中使用 webview。单击 webview 内的链接会使用户保持在 webview 内。启动后一切正常,但仍在应用程序内。但是,在手机休眠一段时间后,我重新
我目前运行的应用程序需要最大堆大小为 16GB。 目前我使用以下标志来处理垃圾回收。 -XX\:+UseParNewGC, -XX\:+UseConcMarkSweepGC, -XX:CMSIniti
$ uname -a Darwin Wheelie-Cyberman 10.8.0 Darwin Kernel Version 10.8.0: Tue Jun 7 16:33:36 PDT 2011
在 while 循环仍在休眠时退出它的最简单方法是什么?是否有某种函数可以在 sleep 时检测某个值是否为真? 或者我是否在循环中设置一个小 sleep 并检查如果不再睡一会儿就退出?如果可以,我该
我正在 Ubunu 的 Jetty 6 上运行 Java Web 服务器,用于基于反向 ajax 的 Web。而且我在向浏览器重新发送数据的线程滞后方面遇到了严重的问题。很多时候,一些线程开始 hib
当我运行长时间操作时,我遇到来自 IIS 的请求超时。我的 ASP.NET 应用程序正在后台处理数据,但处理的记录数量很大,因此操作需要很长时间。 但是,我认为 IIS 使 session 超时。这是
我不确定从哪里开始解决这个问题,但如果我有一个 AJAX 网络应用程序向服务器发送请求并在数据库(在我的例子中是 postgresql)上运行长查询,有没有办法停止或如果仍在运行时用户刷新页面或关闭
我是一名优秀的程序员,十分优秀!