Изменение IFrames InnerHtml от codebehind

Пул потоков разработан для сокращения контекстного переключения среди потоков. Рассмотрите процесс, который имеет несколько выполнений компонентов. Каждый из тех компонентов мог создавать рабочие потоки. Чем больше потоков в Вашем процессе, тем больше времени потрачено впустую на контекстное переключение.

Теперь, если бы каждый из тех компонентов ставил объекты в очередь к пулу потоков, у Вас было бы намного меньше контекстного переключения наверху.

пул потоков разработан для максимизации работы, сделанной через центральные процессоры (или ядра процессора). Именно поэтому, по умолчанию, пул потоков вращает несколько потоков на процессор.

существуют некоторые ситуации, где Вы не хотели бы использовать пул потоков. Если Вы ожидаете на вводе-выводе или ожидаете на событии, и т.д. затем Вы связываете тот поток пула потоков, и это не может использоваться никем больше. Та же идея относится к длительным задачам, хотя то, что составляет длительную задачу, субъективно.

Мир Diablo делает правильное замечание также. Вращение распараллеливает, не свободно. Это занимает время, и они используют дополнительную память для своего стекового пространства. Пул потоков снова использует потоки для амортизации этой стоимости.

Примечание: Вы спросили об использовании потока пула потоков, чтобы загрузить данные или выполнить диск ввод-вывод. Вы не должны использовать поток пула потоков для этого (по причинам, которые я обрисовал в общих чертах выше). Вместо этого используйте асинхронный ввод-вывод (иначе методы BeginXX и EndXX). Для FileStream, который был бы BeginRead и EndRead. Для HttpWebRequest, который был бы BeginGetResponse и EndGetResponse. Они более сложны для использования, но они - надлежащий способ выполнить многопоточный ввод-вывод.

9
задан Alex 8 March 2013 в 15:25
поделиться

4 ответа

Вы можете попробовать это:

protected void btnChange_Click(object sender, EventArgs e)
{
   myIframe.Attributes["src"] = "pathtofilewith.html"
}

или, может быть, это тоже сработает:

protected void btnChange_Click(object sender, EventArgs e)
{
   myIframe.Attributes["innerHTML"] = "htmlgoeshere"
}
14
ответ дан 4 December 2019 в 13:03
поделиться

Вы не можете изменить свойство iframe innerHTML. У него вообще нет свойства innerHTML. Попробуйте RegisterStartupScript и используйте document.write, чтобы изменить содержимое iframe, поскольку это окно.

Между прочим, я думаю, что тег HTML - лучшее место для этого.

0
ответ дан 4 December 2019 в 13:03
поделиться
<asp:Button ID="btnChange" runat="server" Text="Change iframe content" onclick="btnChange_Click" />
<br />
<asp:Literal id="myIframe" runat="server" />

in the code behind:

protected void btnChange_Click(object sender, EventArgs e){
    myIframe.Text = "<h1>Contents Changed</h1>";
}
0
ответ дан 4 December 2019 в 13:03
поделиться

вам нужно создать отдельную пустую страницу aspx, которая получает ответ и загружает его в собственном теле, другими словами, заменить себя, например

mypage.aspx :

<%@ Page contentType="text/html" %>
//... using your namespace that contains the required functionality
<% Response.Write(MyObject.CreateBody()) %>

затем поместите эту страницу в ur iframe ...

<iframe src="mypage.aspx" ... />

проще говоря, iframe - это окно на стороне клиента, вы не можете ссылаться на его тело как на объект со стороны сервера, оно еще не было загружено!

ИЛИ ... вы можете открыть файл html, выгрузить ответ, затем сохранить и закрыть ... этот файл всегда ссылается на ваш iframe. использовать объекты текстового потока, объект файловой системы и т.п.

PS. я не пробовал ничего из этого

0
ответ дан 4 December 2019 в 13:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: