2010-04-18 4 views
2

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

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

Так что мой вопрос:

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

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

+0

Звучит как интересный проект! –

ответ

0

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

+0

Похоже, что слишком много избыточной работы или, может быть, я слишком ленив :) – Hun1Ahpu

1

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

0

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

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

+0

Вы правы - у вас много инструментов. Но я спрашиваю, почему это не автоматическое. Я не говорю о сложных многопоточных приложениях, просто простой поток пользовательского интерфейса - беседа с фоновым потоком. – Hun1Ahpu

0

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