Сделать панель невидимой во время задания - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь сделать панель невидимой во время долгого выполнения задачи.Но это не работает.Если я использую компилятор, то я могу видеть изменение видимого статуса, но не во время на веб-странице.

<%@ 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:&nbsp;<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();
    }

1 Ответ

0 голосов
/ 02 марта 2019

Обновление пользовательского интерфейса из разных потоков может привести к недопустимой исключительной операции между потоками.Вы должны вызвать это.например:

p_test.Invoke((MethodInvoker)(() => { p_test.Visible = false; }));
...