4
A
回答
11
任務的想法是,你可以把它們連:
var task = Task.Factory.StartNew<List<NewTwitterStatus>>(
() => GetTweets(securityKeys),
TaskCreationOptions.LongRunning
)
.ContinueWith(tsk => EndTweets(tsk));
void EndTweets(Task<List<string>> tsk)
{
var strings = tsk.Result;
// now you have your result, Dispatchar Invoke it to the Main thread
}
1
你需要給調度呼叫轉移到任務的延續,它會是這個樣子:
var task = Task.Factory
.StartNew<List<NewTwitterStatus>>(() => GetTweets(securityKeys), TaskCreationOptions.LongRunning)
.ContinueWith<List<NewTwitterStatus>>(t =>
{
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background,
new Action(() =>
{
var result = t.Result;
RecentTweetList.ItemsSource = result;
Visibility = result.Any() ? Visibility.Visible : Visibility.Hidden;
}));
},
CancellationToken.None,
TaskContinuationOptions.None);
1
它看起來像你正在開始一個後臺任務,開始閱讀推文,然後開始另一項任務來閱讀結果,而不需要兩者之間的協調。
我希望你的任務是在延續(見http://msdn.microsoft.com/en-us/library/dd537609.aspx)另一個任務,並在延續,你可能需要調用回UI線程....
var getTask = Task.Factory.StartNew(...);
var analyseTask = Task.Factory.StartNew<...>(
()=>
Dispatcher.Invoke(RecentTweetList.ItemsSource = getTask.Result));
相關問題
- 1. 以下是我的Jquery自動完成代碼錯在哪裏?
- 2. 如何在使用完成事件時避免意大利麪代碼?
- 3. 可以說下面的代碼是我用下面的代碼試圖僵局
- 4. 使用Netbean代碼完成
- 5. 文本()是不是我使用了自動完成工廠下面的代碼從數據庫
- 6. 自我完成代碼
- 7. 什麼是下面的代碼添加新的事件
- 8. 需要優化我使用下面的代碼慢VBA代碼
- 9. 一旦某件事情完成,我該如何完全停止代碼?
- 10. 如何使用流暢界面的代碼完成?
- 11. PHP文件下載完成事件
- 12. 代碼jQuery的AJAX完整的事件
- 13. 使用jQuery事件調用不使用Ajax生成的代碼
- 14. 需要完成我的作業代碼
- 15. 事件完成
- 16. 下載完成時觸發javascript代碼
- 17. 完成多個事件後的運行代碼
- 18. 如何逐步完成附加事件偵聽器的代碼
- 19. DIV我使用下面的代碼裏面DIV不動
- 20. 使用Eclipse進行SimpleCV代碼完成
- 21. 使用Ruby + Qt完成代碼
- 22. Netbeans每次使用代碼完成時下載模式
- 23. IntelliJ代碼完成
- 24. wxStyledTextCtrl代碼完成
- 25. 塊代碼完成
- 26. 使用CodeIgniter庫和PhpStorm自動完成(AKA代碼完成)
- 27. 使用內聯資源完成代碼完成
- 28. 使用傳統代碼時什麼是完成的定義
- 29. 使用代碼實現GIF效果 - 它是如何完成的?
- 30. 如何生成與下面的代碼
請記住,'任務.Result'會阻塞,直到結果可用,所以如果這段代碼沒有錯誤,那麼當你等待任務完成時,你會阻塞UI線程;那會很糟糕。你需要等待調用UI線程,直到你真的有結果。 – Servy