Таймеры.NET работают асинхронно?

На самом деле не может быть сделано. Файлы Excel не отображаются изначально в браузере. В этом контексте iframes похожи на обычные страницы. Сначала вам нужно решить проблему с отображением файлов Excel в браузере.

Самое близкое, что вы можете получить - это иметь программу, которая читает файл Excel, а затем генерирует HTML на основе его содержимого.

Adobe ColdFusion может сделать это изначально; для других языков и платформ могут потребоваться сторонние библиотеки.

14
задан Peter Mortensen 30 March 2010 в 15:38
поделиться

3 ответа

Какой таймер вы используете?

  • System.Windows.Forms.Timer будет выполняться в поток пользовательского интерфейса
  • System.Timers.Timer выполняется в потоке пула потоков, если вы не укажете SynchronizingObject
  • System.Threading.Timer выполняет свой обратный вызов в потоке пула потоков

Во всех случаях сам таймер будет асинхронным - он не будет «занимать» поток, пока не сработает.

36
ответ дан 1 December 2019 в 07:13
поделиться

Таймер будет эффективно работать в фоновом режиме и вызывать события в вашем основном потоке.

1
ответ дан 1 December 2019 в 07:13
поделиться

Я не уверен, как реализованы таймеры в .NET, но если они используют API Windows для создания таймера, цикл сообщений формы получает сообщение WM_TIMER и только тогда, когда поток формы не занято, может ли он обработать этот запрос, чтобы таймер сработал в нужное время, но вы могли остановить поток пользовательского интерфейса. Таймер будет запущен с помощью SetTimer API, и ОС обязательно отправит сообщение WM_TIMER .

Я проверил, только System.Windows.Forms.Timer + TimerNativeWindow.StartTimer (Int32) зависит от:

[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
public static extern IntPtr SetTimer(HandleRef hWnd, int nIDEvent, int uElapse, IntPtr lpTimerFunc);

Так что только у этого таймера есть описанная «проблема».

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

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