人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Visual Basic .NET で 非同期で url から DOMドキュメントを取得するためにはどうしたら良いでしょうか?

●質問者: yamazakiis
●カテゴリ:コンピュータ インターネット
✍キーワード: .NET DOM URL Visual Basic ドキュメント
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● KirakiraHikaru
●35ポイント

.NET では非同期でXMLをLoadできるものがないようなので、

下記のようにスレッドを使用すると非同期で読み込めます。


非同期でXMLをLoadするクラスを作成(XmlDocumentを継承)

Imports System.Xml
Imports System.Threading

Public Class MyXmlDocument
 Inherits XmlDocument
 Private myThread As Threading.Thread
 Private url As String
 Public Event Loaded()

 'XMLロード処理(非同期)
 Public Sub LoadAsync(ByVal filename As String)
 'スレッド実行中チェック
 If IsNothing(myThread) = False Then
 Return
 End If
 'スレッド実行
 url = filename
 myThread = New Threading.Thread(AddressOf LoadAsyncThread)
 myThread.Name = "MyXmlDocumentThread"
 myThread.Start()
 End Sub

 'XMLロード処理(スレッド実行用)
 Private Sub LoadAsyncThread()
 MyBase.Load(url)
 'ロード完了イベント発行
 RaiseEvent Loaded()
 myThread = Nothing
 End Sub

End Class


上記クラスを利用して非同期でXMLをロード

 Private WithEvents myXml As MyXmlDocument = New MyXmlDocument

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 Try
 myXml.LoadAsync("http://q.hatena.ne.jp/list?mode=rss")
 Catch ex As Exception
 MessageBox.Show("Error:" & ex.Message)
 End Try
 End Sub

 Private Sub myXml_Loaded() Handles myXml.Loaded
 Console.WriteLine(myXml.OuterXml)
 End Sub

スレッドについては下記のページが解りやすいです。

http://www.atmarkit.co.jp/fdotnet/mthread/index/index.html


2 ● KirakiraHikaru
●35ポイント

.NET では非同期でXMLをLoadできるものがないようなので、

下記のようにスレッドを使用すると非同期で読み込めます。


非同期でXMLをLoadするクラスを作成(XmlDocumentを継承)

Imports System.Xml
Imports System.Threading

Public Class MyXmlDocument
 Inherits XmlDocument
 Private myThread As Threading.Thread
 Private url As String
 Public Event Loaded()

 'XMLロード処理(非同期)
 Public Sub LoadAsync(ByVal filename As String)
 'スレッド実行中チェック
 If IsNothing(myThread) = False Then
 Return
 End If
 'スレッド実行
 url = filename
 myThread = New Threading.Thread(AddressOf LoadAsyncThread)
 myThread.Name = "MyXmlDocumentThread"
 myThread.Start()
 End Sub

 'XMLロード処理(スレッド実行用)
 Private Sub LoadAsyncThread()
 MyBase.Load(url)
 'ロード完了イベント発行
 RaiseEvent Loaded()
 myThread = Nothing
 End Sub

End Class


上記クラスを利用して非同期でXMLをロード

 Private WithEvents myXml As MyXmlDocument = New MyXmlDocument

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 Try
 myXml.LoadAsync("http://q.hatena.ne.jp/list?mode=rss")
 Catch ex As Exception
 MessageBox.Show("Error:" & ex.Message)
 End Try
 End Sub

 Private Sub myXml_Loaded() Handles myXml.Loaded
 Console.WriteLine(myXml.OuterXml)
 End Sub

スレッドについては下記のページが解りやすいです。

http://www.atmarkit.co.jp/fdotnet/mthread/index/index.html

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ