Пожалуйста, помогите мне - веб-приложение c # Мне нужно загрузить 3 пользовательских элемента управления одновременно - PullRequest
1 голос
/ 23 августа 2010

У меня есть страница с 3 использованными элементами управления, которые динамически добавляются на страницу.Один из этих элементов управления использует класс, который извлекает набор записей из базы данных (довольно быстрый запрос), а два других пользовательских элемента управления обращаются к одному классу и возвращают набор данных из базы данных.2, которые используют один класс, в среднем возвращают данные в течение 10 секунд.Теперь я хочу, чтобы пользователь зашел на страницу и увидел 3 полосы загрузки, чтобы каждый пользовательский элемент управления загружался в фоновом режиме.Я хочу, чтобы все они начали загружаться одновременно.

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

 protected void Page_Load(object sender, EventArgs e)
{       
    Thread t = new Thread(new ThreadStart(Load1));
    t.Start();
    t.IsBackground = true;
    t.Priority = ThreadPriority.Highest;
    t.Join();

    Thread s = new Thread(new ThreadStart(Load2));
    s.Start();
    s.IsBackground = true;
    s.Priority = ThreadPriority.Highest;
    s.Join();

    Thread r = new Thread(new ThreadStart(Load3));
    r.Start();
    r.IsBackground = true;
    r.Priority = ThreadPriority.Highest;
    r.Join();
}

private void Load1()
{
    Control ctrl1 = LoadControl(@"\Controls\ctrl1.ascx");
    Pnl1.Controls.Add(ctrlPreSolic);
}

private void Load2()
{
    Control ctrl2 = LoadControl(@"\Controls\ctrl2.ascx");
    Pnl2.Controls.Add(ctrlActive);
}

private void Load3()
{
    Control ctrl3 = LoadControl(@"\Controls\ctrl3.ascx");
    Pnl3.Controls.Add(ctrlNonActive);
}

, однако это не работает, этовсегда загружает первый элемент управления, затем второй, затем третий в строке, но не все одновременно.Это неправильный подход к веб-приложению?Можете ли вы продеть веб-приложение?Мне действительно нужна помощь с этим, если кто-нибудь может мне помочь!

Ответы [ 2 ]

0 голосов
/ 23 августа 2010

Вместо того, чтобы использовать сервер для этого, я бы предложил использовать вызов AJAX. Вы можете использовать стороннюю библиотеку, такую ​​как jQuery и ее метод загрузки, и она будет запускать их как можно быстрее.

Все еще в порядке, но ни один звонок не будет ждать другого, чего, я думаю, вы пытаетесь избежать.

Это определенно похоже на то, что должно быть на стороне клиента.

0 голосов
/ 23 августа 2010

Использование потоков, как вы, определенно не способ асинхронной загрузки веб-элементов управления.

Если вы настаиваете на своем подходе, все потоки должны объединяться только после этого, иначе каждый из них заблокирует выполнение и фактически устранит все преимущества многопоточности, которые вы пытались получить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...