我写了一个 asp.net
页面,它打印了一些文本如下:
protected void Page_Load(object sender, EventArgs e)
{
Response.ClearContent();
for (int i = 0; i <=100; i++)
{
var isOk = DoSomeTask(i);
context.Response.Write(string.Format("Step {0}: {1}",i, isOk ? "Success": "Error"));
Thread.Sleep(4000);
}
}
我遇到了一个问题,文本仅在页面加载成功时显示。如何在页面执行时呈现文本?
最佳答案
好吧,我今天很早就读了你的问题,但没有回答,因为我担心我可能无法用简洁的代码示例为你提供解决方案建议。使用 AJAX
和处理程序 (ashx
) 时,您将遇到相同的障碍,而这两者非常相似。
您有一些进程在服务器上工作,您希望随着服务器上发生的事情不断得到反馈。
最好的选择是发布-订阅模型,在 asp.net 世界中 SignalR
就是这个词!看看官方资源here
.
步骤如下:
- 每当您在长时间运行的任务中执行部分工作时生成事件
- 设置响应步骤 1 中生成的事件的信号处理程序(集线器)。
- 在aspx页面(客户端)连接signalr hub
- 在客户端代码(在第 3 步中设置)处理事件(第 2 步)时接收响应并更新您的页面。
您可以在服务器端设置信号处理程序并订阅长时间运行的处理任务
关于c# - 在页面执行长时间运行的任务时写入多行文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38216252/