2011-06-28 67 views
6

我可以依靠總是在一個線程中執行Task的事實嗎?它可以是任何,但它應該是相同的整個身體,因爲我需要線程的Culture設置正確。在一個線程中執行的.NET任務

Task bind = Task.Factory.StartNew(() => 
{ 
    Thread.CurrentThread.CurrentCulture = culture; 

    // do some asp.net binding stuff with automatic 
    // date formatting 

    gridView.DataSource = table; 
    gridView.DataBind(); 
} 

如果我不能,是否有一個參數左右,以獲得此行爲?

歡呼聲中,馬蒂亞斯

+1

我不相信在不同線程上的數據綁定會很好地發揮......並非最不重要的,http-context將會蒸發 –

+0

好點,不知道。我重構了代碼,以便以異步方式異步接收數據並進行綁定。這是正確的路,不是嗎? –

+0

是的,但前提是你在獲取其他東西時有用。即「啓動異步」,「做別的事情」,「加入異步」,「數據綁定」沒有問題,但「啓動異步」,「加入異步」,「數據綁定」毫無意義。 –

回答

0

是的,除了啓動子任務或顯式創建其他線程(線程,線程池等)時,任務主體在一個線程中執行。

3

我相信對於任何特定的任務中指定的代碼將在一個線程來執行 - 但延續可能不是。如果任務線程敏捷在任務的內部,那麼寫出有效的代碼將非常困難,所以我很確定你沒問題。

另一方面,您的代碼可能最終會變得更清潔,如果您明確地在任何相關的地方使用文化。這可能是不可行的,取決於ASP.NET的一面,但如果可能的話,這是值得考慮的。

+0

謝謝喬恩。我試過顯式傳遞一個文件,但我沒有找到任何方法('DataSource' setter,'DataBind'方法)。不過,我同意這將是最優雅的方式。 –

相關問題