在长时间运行的任务中,我尝试使面板不可见。但这行不通。如果使用编译器,则可以在网页上看到可见状态的更改,但看不到。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="homepage.WoW._default" Async="true" %>
这是我的更新面板:
<asp:UpdatePanel ID="up_mplus" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Panel ID="p_test" runat="server">
<span style="position:absolute; width:calc(100% - 40px); height:25px; text-align:center">Mythic plus Season: <asp:DropDownList ID="ddl_mplus_season" runat="server" BackColor="Transparent" style="color:gainsboro; width:150px; height:21px; top:5px;" OnSelectedIndexChanged ="ddl_mplus_season_SelectedIndexChanged"></asp:DropDownList></span>
<div id="div_mplus" runat="server" style="width:100%; height:calc(100% - 30px); top:30px"></div>
</asp:Panel>
</ContentTemplate>
这是后面的c#代码:
protected void btn_reolad_bottom_left_Click(object sender, ImageClickEventArgs e)
{
testc();
}
protected async void testc()
{
this.p_test.Visible = false;
this.up_mplus.Update();
await Task.Run(() =>
{
System.Threading.Thread.Sleep(5000);
});
this.p_test.Visible = true;
this.up_mplus.Update();
}
答案 0 :(得分:0)
从不同线程更新UI可能导致非法的跨线程操作异常。 您需要调用它。例如:
p_test.Invoke((MethodInvoker)(() => { p_test.Visible = false; }));