2015-06-19 21 views
-4

我有一個從SharePoint網站加載數據的程序。它會加載txt文件,xml文件等。由於用戶連接到SharePoint,這些「加載」操作中的任何一個操作都會花費很多時間。因此,在加載數據之前,整個窗體UI都無響應。C#需要2個線程才能執行很長

所以,我想知道如何輕鬆地創建一個線程的「檢索」的信息,而整個Windows窗體UI仍然工作,並可操作。

+0

看看這個:http://stackoverflow.com/a/202896/1218281 – Cyral

+0

對不起,沒有明白這個例子。 :( – dracebus

+0

[使用異步和等待異步編程](https://msdn.microsoft.com/en-us/library/hh191443.aspx) – Max

回答

1

您有幾個選項。我不打算爲他們提供確切的代碼,但是,我會爲您提供研究主題。

您可以使用BackgroundWorker,Task.Run()或通過執行Thread.Start()來管理您自己的線程。下載完成後是否需要點燃事件?如果是這樣,你可以做這樣的事情:

var task = new Task(() => DoSomething()); 
task.ContinueWith(() => SignalDone(), TaskScheduler.FromCurrentSynchronizationContext()); 
task.Run(); 

的ContinueWith和TaskScheduler.FromCurrentSynchronizationContext將確保信令將在UI線程上完成,以儘量減少競爭條件。如果您正在對任何正在填充的內容進行數據綁定,那麼您就可以獨立運行。

相關問題