Как автоматически запускаться в фоновом режиме? - PullRequest
2 голосов
/ 18 апреля 2010

Я не уверен, что это еще не реализовано, я надеюсь, что это так. Но я знаю, что в .Net программисты должны вручную запускать трудоемкую задачу в фоновом потоке.

Таким образом, каждый раз, когда мы обрабатываем какое-то событие пользовательского интерфейса, мы понимаем, что это займет некоторое время, мы также понимаем, что это приведет к зависанию потока пользовательского интерфейса и нашего приложения. И затем мы заставляем все эти фоновые вещи работать и обрабатывать обратные вызовы или что-то еще.

Итак, мой вопрос:

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

А если нет, то почему?

Ответы [ 4 ]

1 голос
/ 18 апреля 2010

В Haskell (и других функциональных языках) было проделано много работы, чтобы заставить его автоматически выполнять действия в других потоках. Но Haskell не самый простой язык программирования GUI.

0 голосов
/ 18 апреля 2010

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

0 голосов
/ 18 апреля 2010

В этой области ведутся активные исследования, но это сложная тема. В качестве одного примера см. Проект Axum MS Research. Это DSL на основе передачи сообщений, предназначенный для CLR.

Однако я не знаю ни одного языка, специфичного для пользовательского интерфейса. Большинство крупных фреймворков (включая .NET) имеют множество инструментов, помогающих процессу запуска задач в фоновом режиме.

0 голосов
/ 18 апреля 2010

Вы можете посмотреть что-то вроде Кварц для .Net . Это планировщик заданий, но его можно использовать для выполнения трудоемких процессов в фоновом потоке.

...