【问题标题】:Trouble with WebClient.DownloadDataAsync(). Not downloading the data?WebClient.DownloadDataAsync() 出现问题。不下载数据?
【发布时间】:2009-10-18 22:20:37
【问题描述】:

public string[] SearchForMovie(string SearchParameter) {
WebClientX.DownloadDataCompleted += new DownloadDataCompletedEventHandler(WebClientX_DownloadDataCompleted); WebClientX.DownloadDataAsync(新的 Uri( "http://www.imdb.com/find?s=all&q=ironman+&x=0&y=0"));

    string sitesearchSource = Encoding.ASCII.GetString(Buffer);
}

void WebClientX_DownloadDataCompleted(object sender,
    DownloadDataCompletedEventArgs e)
{
    Buffer = e.Result;
    throw new NotImplementedException();
}

我得到了这个例外:

矩阵不能为空。引用我的byte[]变量Buffer。

因此,我可以得出结论,DownloadDataAsync 并没有真正下载任何内容。是什么导致了这个问题?

附言。如何轻松格式化我的代码,使其在此处正确缩进。为什么我不能从 Visual C# express 复制过去的代码并在此处保持缩进?谢谢! :D

【问题讨论】:

    标签: c# winforms asynchronous webclient


    【解决方案1】:

    这里的关键词是“异步”;当您调用DownloadDataAsync 时,它只会开始 下载;它还没有完成。您需要在回调(WebClientX_DownloadDataCompleted)中处理数据。

    public string[] SearchForMovie(string SearchParameter)
    {
        WebClientX.DownloadDataCompleted += WebClientX_DownloadDataCompleted;
        WebClientX.DownloadDataAsync(new Uri(uri));
    }
    
    void WebClientX_DownloadDataCompleted(object sender,
         DownloadDataCompletedEventArgs e)
    {
        Buffer = e.Result;
        string sitesearchSource = Encoding.ASCII.GetString(Buffer);
    }
    

    另外——不要假设 ASCII; WebClientX.Encoding 会更好;或者只是DownloadStringAsync:

    static void Main()
    {
        var client = new WebClient();
        client.DownloadStringCompleted += DownloadStringCompleted;
        client.DownloadStringAsync(new Uri("http://google.com"));
        Console.ReadLine();
    }
    
    static void DownloadStringCompleted(object sender,
        DownloadStringCompletedEventArgs e)
    {
        if (e.Error == null && !e.Cancelled)
        {
            Console.WriteLine(e.Result);
        }
    }
    

    【讨论】:

    • 啊哈!我自己(通过演绎)弄清楚了这一点,我刷新并看到了您的答案。 :P 好吧,这几乎改变了我在变量范围方面的程序设计......到实验室!
    猜你喜欢
    • 1970-01-01
    • 2015-09-14
    • 2019-04-22
    • 1970-01-01
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多