Vb Thread
-
Merhaba arkadaşlar vb de bitane rss reader denedim. thread olmadan gayet güzel çalışıyor. Ancak Aynı işi thread ile bir türlü yapamadım bir türlü anlayamadım olayı kodları ekliyorum yardımcı olursanız güzel olucak.
Imports System.Xml Imports System.IO Imports System.Net Imports System.Threading Partial Class _Default Inherits System.Web.UI.Page Private trd As Thread Dim RssURL As String = "http://rss.cnn.com/rss/edition_world.rss" Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load trd = New Thread(AddressOf ReadRSS) trd.IsBackground = True trd.Start() End Sub Public Sub ReadRSS() Dim wr As WebRequest = System.Net.WebRequest.Create(RssURL) Dim resp As WebResponse = wr.GetResponse() Dim rssStream As Stream = resp.GetResponseStream() Dim rssDoc As New XmlDocument() rssDoc.Load(rssStream) Dim rssItems As XmlNodeList = rssDoc.SelectNodes("rss/channel/item") Dim title As String = "" Dim link As String = "" Dim description As String = "" Dim i As Integer For i = 0 To rssItems.Count - 1 Dim rssDetail As XmlNode 'Get the title rssDetail = rssItems.Item(i).SelectSingleNode("title") If rssDetail.Equals(Nothing) = False Then title = rssDetail.InnerText Else title = "" End If 'Get the link rssDetail = rssItems.Item(i).SelectSingleNode("link") If rssDetail.Equals(Nothing) = False Then link = rssDetail.InnerText Else link = "" End If 'Get the description rssDetail = rssItems.Item(i).SelectSingleNode("description") If rssDetail.Equals(Nothing) = False Then description = rssDetail.InnerText Else description = "" End If Response.Write("<p><b><a href='" + link + "' target='new'>" + title + "</a></b><br/>") Response.Write(description + "") Next End Sub End Class -
gördüğüm kadarıyla threadstart sınıfını kullanmamışsın. şöyle yapabilirsin
trd = New Thread(New ThreadStart(AddressOf ReadRSS))
trd.IsBackground = True
trd.Start()
bu şekilde çalışması lazım -
Son satırdaki
Response.Write("<p><b><a href='" + link + "' target='new'>" + title + "</a></b><br/>")
Response is not available in this context. Şeklinde hata alıyorum.
break point koydugumda rss stream get response kısmında herhangibir değer göremiyorum. ama webrequestte url yi alıyorum.
-
page load a ReadRSS metodunu direk çağırtıp da çalıştırıyorsan ve thread ile çalışmıyorsa muhtemleen thread çakısması vardır bir değişken üzerinde..
readrss metodunun içine
If InvokeRequired Then
Me.Invoke(New MethodInvoker(AddressOf ReadRSS ))
Else
... burayada readrss içindeki tüm kodları al
End If
breakpoint koy If InvokeRequired Then bu noktaya ve f11 e basarak al satıra mı yoksa diğerine mi gittiğine bak bi -
Şu Invoke olayını araştırayım bi hocam, senin dediğin gibi yazdıgımda direk çıkmıyor. Öbür türlüde properties oluşturmak gerekiyor.
Tesekkürler hocam
-
MethodInvoker framework 4.0 için hocam.. olmadıysa bir tane delegate oluşturup yapabilrsin
