【发布时间】:2016-02-04 16:19:02
【问题描述】:
我正在用 C# 编写一个简单的 winforms 应用程序,该应用程序连接到每 1 秒更新一次 JSON 的 ashx 文件。我的应用需要调用此文件,收集数据并将其显示在我的 aspx 页面上。
要求是我有一个按钮来启动这个过程。当按下按钮时,数据的一个实例会按原样显示。问题是当我尝试多次这样做时。
protected void eThorButton_Click(object sender, EventArgs e)
{
//for (int i = 0; i < 5; i++)
//{
RenderData(eThorButton.Text);
Thread.Sleep(1000);
//}
}
private void RenderData(string buttonText)
{
EquationData deserializedData = getData("http://test.com/test.ashx");
var processed = new ProcessEquation();
int result = processed.Calculate(deserializedData);
string res = deserializedData.parm1 + " " + deserializedData.op + " " + deserializedData.parm2 +
" = " + result;
TextBoxResult.Text = res;
equation.Append(" " + deserializedData.parm1 + " " + deserializedData.op + " " + deserializedData.parm2 +
" = " + result + '\n');
TextAreaResults.Value = equation.ToString();
}
我想要的是在循环数据时呈现每条记录,在继续之前暂停一秒钟。实际发生的是循环首先完成,然后同时呈现所有 5 条记录。
如何修改我的代码以显示每条记录,间隔一秒?
谢谢
我创建了一个支持 ajax 的 WCF 服务:
namespace CandidateTest.Service
{ [ServiceContract(Namespace = "CandidateTest.Service")] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 公共类 eThorService { 公共字符串按钮; [WebGet()] [运营合同] 公共无效 getUpdate() { _Default def = new _Default();
def.RenderData(button);
}
}
}
以及调用“getUpdate”的脚本
$(function () {
while ($('#eThorButton').text != "Stop") {
$.ajax({
url: 'Service/eThorService.svc/getUpdate',
method: 'GET',
dataType: 'json',
success: function(){
alert("success");
},
error: function (err) {
alert(err);
}
})
delay(1000);
}
});
这是基于在线研究。这是我第一次尝试这样做,所以我真的不知道自己在做什么。当我输入 URL 时,该服务从浏览器运行,但似乎没有从我的脚本中调用。我做错了什么?
【问题讨论】:
-
当你把它放在浏览器中时,你是在放完整的 url,对吧?尝试将完整的网址放在
url:部分。
标签: c# asp.net multithreading wcf