webrequest异步调用

本文展示了一个使用Silverlight进行网络请求的例子。通过创建WebClient对象,并利用异步回调机制从指定URL获取数据,最终在界面上显示这些数据。文章详细介绍了如何处理UI线程上的数据更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

XAML:

<UserControl x:Class="SilverlightApplication10.webrequestSample"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Width="600" Height="400">
    <Grid x:Name="LayoutRoot" Background="White">
        <TextBox x:Name="tb" FontSize="22" Background="Green"
                 HorizontalScrollBarVisibility="Visible"
                 VerticalScrollBarVisibility="Visible"
                 Foreground="White" Text="Loading..."/>
    </Grid>
</UserControl>
VB:

Imports System.IO

Partial Public Class webrequestSample
    Inherits UserControl
    '定义异步委托方法
    Private Delegate Sub DispatcherInvoke(ByVal str As String)
    Public Sub New()
        InitializeComponent()
        '定义URL地址
        Dim url As String = "http://www.hzjingwei.gov.cn/hzjingwei2/09jingwei/index.asp"
        '创建WebClient对象
        Dim request As WebRequest = HttpWebRequest.Create(New Uri(url, UriKind.RelativeOrAbsolute))
        '开始获取响应并进行异步回调
        request.BeginGetResponse(New AsyncCallback(AddressOf responseReady), request)
    End Sub
    Private Sub responseReady(ByVal ar As IAsyncResult)
        '返回异步回调结果对象
        Dim request As WebRequest = TryCast(ar.AsyncState, WebRequest)
        '获取结果响应对象
        Dim response As WebResponse = request.EndGetResponse(ar)
        '定义返回流对象
        Using stream As IO.Stream = response.GetResponseStream()
            '使用流读取对象
            Dim reader As New StreamReader(stream)

            '*** 直接读取将发生错误。
            'tbk.Text = "reader.ReadToEnd();

            '使用Dispatcher异步执行委托方法
            tb.Dispatcher.BeginInvoke(DirectCast(AddressOf processResult, DispatcherInvoke), reader.ReadToEnd())
        End Using
    End Sub
    Private Sub processResult(ByVal result As String)
        '显示返回字符串
        tb.Text = result
    End Sub
End Class

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值