x分钟后C#.net更新页

问题描述 投票:0回答:1

我已经在呈现页面后尝试用新值更新HTML表。新值显示在HTML表的“ 10分钟”列中。

这些是在“现在”(Now)列中显示的相同值,但是当在“ 10分钟”(10 min)列中显示时,它们应保持固定。

以下代码确定呈现“ 10分钟”列之前需要多少分钟。

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

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

然后在“ 1分钟”列中重复此操作。

我一直在尝试使用计时器来完成此操作,但没有成功。

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>
c# html asynchronous timer updatepanel
1个回答
0
投票

让:

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

...是您希望延迟的代码。

您可以在应用程序中的某个位置包含此静态方法:

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));

...注意,对于熟练的读者来说,可以将静态方法快速修改为“ repeatMe”而不是“ delayMe”函数。

© www.soinside.com 2019 - 2024. All rights reserved.