2010-04-18 91 views
2

我不確定它還沒有實現,我希望它是。但我知道.Net程序員應該在後臺線程中手動運行耗時的任務。如何在後臺自動運行?

所以,每次我們處理一些UI事件,我們知道這需要一些時間,我們也明白,這將掛起UI線程和我們的應用程序。然後我們使所有這些背景工作,並處理回調或其他。

所以我的問題是:

在一些語言/平臺是否有會自動在後臺運行耗時的任務,並執行相關的所有工作本身的機制?因此,我們只編寫用於處理特定UI事件的代碼,並且該代碼將以某種方式檢測爲耗時且將在後臺執行。

如果沒有,那爲什麼?

+0

聽起來像一個有趣的項目! – 2010-04-18 18:45:22

回答

0

你可以看看像Quartz for .Net。它是一個作業調度程序,但可用於在後臺線程中運行耗時的進程。

+0

看起來仍然太多冗餘工作,或者可能是我太懶惰了:) – Hun1Ahpu 2010-04-18 19:04:00

1

在Haskell(和其他函數式語言)中已經做了很多工作,使它能夠在其他線程中自動執行任務。但Haskell不是最簡單的GUI編程語言。

0

這方面正在進行積極的研究,但這是一個複雜的話題。舉一個例子,見MS Research的Axum項目。這是一個基於消息傳遞的DSL瞄準CLR。

但是,我不知道任何UI特定的語言。大多數大型框架(包括.NET)都有很多工具來協助在後臺運行任務的過程。

+0

你是對的 - 有很多工具。但我在問爲什麼它不是自動的。我不是在談論複雜的多線程應用程序,只是簡單的UI線程 - 後臺線程對話。 – Hun1Ahpu 2010-04-18 19:08:09

0

沒有(據我所知),原因是因爲計算機事先並不知道某個任務需要多長時間才能完成。毫無疑問 - 程序員可以在特定情況下設計出一種計算機算法,以確定某個特定任務的預期持續時間 - 但目前還無法讓計算機確定任意任務需要花費多長時間。這是一個非常重要的計算機科學問題的結果,稱爲Halting Problem