【问题标题】:asp.net multithreaded Pageasp.net 多线程页面
【发布时间】:2012-07-28 20:40:37
【问题描述】:

我正在处理一个页面,该页面将通过从不同服务器获取数据来显示系统的当前状态。

在我的页面上,我有五个不同的标签和一个按钮。一旦我单击按钮,我想要五个不同的线程从服务器获取数据并更新相应的标签值。我已经使用以下代码制作了一个测试应用程序

protected void Page_Load(object sender, EventArgs e)
    {
        Thread t = new Thread(updateLbl);
        t.Start();
    }   


    protected void btnUpdateStatus_Click(object sender, EventArgs e)
    {
        Thread[] arrThread = new Thread[5];
        for (int i = 0; i < arrThread.Length; i++)
        {

            arrThread[i] = new Thread(new ParameterizedThreadStart(Update));
            arrThread[i].Name = "Thread" + (i + 1).ToString();

            arrThread[i].Start(
                new Parameters()
                    {
                        id = i + 1,
                        label = this.Master.FindControl("MainContent").FindControl ("Label" + (i + 1).ToString()) as Label
                    } as object);
        }
    }
    public void Update(object o)
    {
        Parameters p = o as Parameters;
        if (p != null && p.label != null)
        {
            p.label.Text = GetSystemState(p.id);
        }
    }
    class Parameters
    {
        public int id { get; set; }
        public Label label { get; set; }
    }

它确实会更新标签的值,但页面会继续加载,直到检索到来自服务器的所有值,然后将它们立即显示在页面上。

我想要一些东西,如果一个线程已经检索了它的数据,它的相应标签必须更新并且对客户可用,无论其他进程是否检索了他们的数据,并且一旦检索到数据,它们必须得到更新。

【问题讨论】:

  • 但这不是 ASP.NET 页面生命周期的本质。流程背后的代码以及完成后的 HTML 将被发布。使用 HTML5,我认为您可以更新单个元素,但我不知道如何。
  • 没有任何方法可以使用 ajax 或页面方法来获取页面上每个控件的部分更新

标签: c# asp.net .net multithreading


【解决方案1】:

根本问题是了解 ASP.Net 页面生命周期

基本上您在页面上使用多线程,但服务器将响应发送给用户,直到页面完成处理。

要获得所需的输出,请遵循以下方法:

https://stackoverflow.com/a/11525692/1268570

更多信息:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    相关资源
    最近更新 更多