У меня есть страница, где я перечисляю аппаратные устройства, которые мы отслеживаем для клиентов. Каждая отображаемая строка также показывает состояние устройства, то есть работает ли оно, приостановлено, запускается и т. Д.
Чтобы сократить время загрузки страницы, я перечисляю устройства, но не запрашиваю их статус, пока страница не будет отображена. Это связано с тем, что некоторые запросы, например, через SNMP или другой API ' Ответ s может занять до 5-10 секунд. Таким образом, для списка из десяти устройств может потребоваться более минуты, когда пользователь просматривает пустую страницу. Вместо этого я делаю следующее -
На странице со списком устройств у меня есть следующий сценарий:
$(document).ready(function () {
var devices = $('div[name="runStatus"]');
devices.each(function () {
// Get device ID (I embed this using the HTML5 data-* attributes/annotations)
var deviceId = $(this).attr("data-deviceid");
var url = "/devmanager/status/" + deviceId;
$.getJSON(url, function (response) {
// Not actually important to the question...set text status, colours etc
$('div[data-deviceid="' + deviceId + '"]').text(response);
//...
});
});
});
Я обнаружил, что если я разрешаю запуск этого сценария, все ссылки на странице перестают отвечать.
Я предполагаю, что это потому, что у меня довольно много почти параллельных асинхронных запросов, которые блокируются до тех пор, пока они не получат ответ от сервера, и каким-то образом "поток пользовательского интерфейса" блокируется этим?
Однако я думал, что это не предполагалось
Я считаю, что это «блокирующее» поведение происходит в IE8, Chrome 8.0 и Firefox 3.6. На самом деле Chrome показывает стрелку курсора + вращающийся унитаз смерти (я использую Windows 7), как будто страница отображается не полностью. . . . thread.Abort (); Но могу ли я прервать задачу (в .Net 4.0) таким же образом, не используя механизм отмены. Я хочу убить ...
Мы могли бы прервать поток следующим образом:
Thread thread = new Thread(SomeMethod);
.
.
.
thread.Abort();
Но могу ли я прервать задачу (в .Net 4.0) таким же образом, не используя механизм отмены. Я хочу немедленно завершить задачу.