2010-12-01 61 views
1

我有兩個線程:如何在多個線程之間傳遞值

線程1正在循環中從Web服務中獲取XML。

線程2解析線程1獲取的XML並在UI中顯示它。

請告訴我什麼是將線程1中的XML數據傳遞給線程2的最佳方式,因爲它是由線程1檢索的?

線程1獲取XML,然後線程2消耗它。

爲此,我創建了一個循環鏈表,線程1將其XML放在鏈表中,線程2獲取它的XML並將其從列表中刪除,並且工作正常。

請告訴我,如果有任何其他更好的方法比我使用的。

回答

2

看起來你需要

Producer-Consumer Quequ

+0

查詢快速和非常有用的答覆。 – 2010-12-01 07:35:13

+0

僅供參考...在該文章中實施生產者 - 消費者模式是不正確的。微軟真的需要清除那篇文章。 – 2010-12-01 19:05:18

2

該框架提供

ConcurrentQueue

與.NET 4.0。它應該在消費者和生產者之間實現一個隊列,而不需要任何手動同步。

1

如果您使用的是.NET 4.0,則可以使用BlockingCollection,這是一個生產者 - 消費者隊列,它允許消費者等待來自生產者的更多工作,而無需管理交互。