Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > UpdatePanel работа с делегатом


Автор: Shit_happenes 15.9.2009, 09:25
есть простой updatePanel
Код

<asp:Button ID="btnSUbmit" runat="server" Text="Click Me" OnClick="btnSUbmit_Click" />
        <asp:UpdatePanel ID="updatePanel" UpdateMode="Conditional" runat="server">
            <ContentTemplate>
                <div id="tempDiv">
                    Result:
                    <asp:TextBox ID="txResult" TextMode="MultiLine" runat="server" Height="170px"></asp:TextBox>
            </ContentTemplate>
        </asp:UpdatePanel>


и код 
Код

Utils util = null;

    protected void Page_Load(object sender, EventArgs e)
    {
        scriptManager.RegisterAsyncPostBackControl(btnSUbmit);
        util = new Utils();

        if (util.GeneratedFinished == null)
        {
            util.GeneratedFinished +=
                    p =>
                    {
                        txResult.Text += p.ToString() + "\n";
                        updatePanel.Update();
                    };
        }
    }

    protected void btnSUbmit_Click(object sender, EventArgs e)
    {
        txResult.Text = String.Empty;
        util.Submit();
    }


код Utils
Код

public delegate void Generated(int articleID);
    public Generated GeneratedFinished;
    
    public void Submit()
    {
        for (int i = 0; i < 1000; i++)
        {
            if (GeneratedFinished != null)
                GeneratedFinished(i);
            Thread.Sleep(1000);
        }
    }


Мне надо чтобы после каждого цикла на странице у юзера отображалось новая строчка.
Но после updatePanel.Update(); после каждого цикла ничего не происходить. 
Что посоветуете?

Автор: 2xmax 15.9.2009, 23:50
бррр... чем вам таймер не угодил?

Thread надо запустить сначала, а так вы просто запускаете метод Submit, а не используете многопоточность
поэтому у вас текстбокс заполнится сразу и полностью через 1000*1000 мс smile
 
то есть вы должны делать что-то типа этого:
Код

Thread t = new Thread(util.Submit);
 t.Start();

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)