C#. net Обновление страницы через x минут - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь обновить таблицу HTML новыми значениями после того, как страница уже обработана. Новые значения представлены в столбце «10 минут» для таблицы HTML.

Это те же значения, что представлены в столбце «Сейчас», однако они должны оставаться фиксированными при представлении в «10 минутах». "column.

Следующий код определяет, сколько минут требуется для визуализации столбца" 10 минут ".

    timeStart = market[0].marketStartTime;
    timeNow = DateTime.Now.AddHours(-2);

    timeTenMinToStart = timeStart.Subtract(timeNow).TotalMinutes - 10;

Это затем повторяется для столбца" 1 минута ".

Я пытался выполнить sh это с помощью таймера, но безуспешно.

Market.aspx.cs

    public string getTableData()
    {
        length = market[0].runners.Count; //determine length of table
        int lengthTable = length;
        int marketCounter = 0;
        string htmlStr = "";
        while (lengthTable > 0)
        {
            htmlStr += "<tr><td> <font color=\"red\">" + market[0].runners[marketCounter].runnerName + "</text></td>" + "<td>" + marketOdds[0].runners[marketCounter].lastPriceTraded.ToString() + "</td>" + "<td>" + "</td>" + "<td>" + TenMin????() + "</td></tr>";
            lengthTable--;
            marketCounter++;
        }

        return htmlStr;

    }

Market.aspx

<asp:ScriptManager ID="ScriptManager1" runat="server">   
</asp:ScriptManager>

<asp:UpdatePanel ID="upUpdatePanel" runat="server" UpdateMode="Conditional" ViewStateMode="Enabled">
    <ContentTemplate>
        <p>

    <table border="1" class="accountInfo">
    <tr >
        <td width="300px"> <b>ID</b> </td>   
        <td width="50px"> <b>Now</b> </td>      
        <td width="50px"> <b>10 min</b> </td> 
        <td width="50px"> <b>1 min</b> </td>    
        <td width="50px"> <b>Change</b> </td>                                 
    </tr>   
         <%=getTableData()%>
    </table>

    </p>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Refresh" EventName="Click" />
    </Triggers>
</asp:UpdatePanel>

1 Ответ

0 голосов
/ 17 января 2020

Let:

public void MY_FUNCTION_TO_DELAY ()
{
    // your code here
}

... будет вашим кодом, который вы sh задержите.

Вы можете включить этот метод stati c где-нибудь в вашем приложении:

public static void DelayMe(Action myVoidMethod, TimeSpan delayTime)
{
    Func<bool> f = () => { myVoidMethod.Invoke(); return false; };
    System.Threading.Timer t = default;
    t = new System.Threading.Timer(_ =>
    {
        if (!f())
        {
            t.Dispose();
        }
    }, null, default(TimeSpan), delayTime);
}

... Затем, чтобы вызвать задержку функции (на 1 минуту в этом случае):

DelayMe(InitializeTradeHistory, TimeSpan.FromMinutes(1));

... примечание, для адепта, читающего это, состояние * Метод 1015 * можно быстро изменить в функцию «repeatMe» вместо функции delayMe.

...