C # WebForm Асинхронизация производительности Несколько DropDownLists - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь улучшить время загрузки веб-страницы.Страница вызывает более 75 выпадающих списков на функции загрузки.Код написан на C # с использованием веб-форм asp.net (Framework 4.7).Я перечислил все свои изменения ниже, я не уверен, что достиг своей цели, так как улучшение производительности не очень большое, и когда я запускаю код, я всегда получаю один и тот же порядок в консоли вывода при использовании Debug.Print ("").

Это то, что я сделал до сих пор ...

Добавлен Async = "true" на главной странице.

<%@ Page Title="" Language="C#" MasterPageFile="~/Sample.Master" AutoEventWireup="true" CodeBehind="Details30.aspx.cs" Inherits="Sample.Details30" Async="true" %>

Добавлен асинхронный вызов в Page_Load.

protected async void Page_Load(object sender, EventArgs e)

Добавлено ожидание загрузки всех раскрывающихся страниц внутри Page_Load.

await LoadAllDropDownLists();

Добавлено асинхронное задание для метода / функции.

protected async Task LoadAllDropDownLists()
{
    var loadDocumentForm = LoadDocumentForm();
    var loadStatus = LoadStatus();
    var loadAgents = LoadAgents();
    ...

    await Task.WhenAll(loadDocumentForm, loadStatus, loadAgents,...);
}

КаждыйФункция следует этому же подходу.

        protected async Task LoadDocumentForm()
        {
            Debug.Print("LoadDocumentForm()");
            using (CompanyEntities context = new CompanyEntities())
            {
                ddlDocumentForm.DataSource = await (from doc in context.DocumentForm

                                         select new
                                         {
                                             id = doc.id,
                                             documentForm= doc.documentForm

                                         }).ToListAsync();

                ddlDocumentForm.DataValueField = "id";
                ddlDocumentForm.DataTextField = "documentForm";

                ddlDocumentForm.AppendDataBoundItems = true;
                ddlDocumentForm.Items.Insert(0, new ListItem("--- Select ---", "0"));

                ddlDocumentForm.DataBind();
        }
    }
...