通常我可以在这里找到问题的答案,但不是这次,所以我会尝试提问。问题:尝试在Silverlight 5.0中使用DownloadStringAsync
。我使用以下方式拨打电话:
System.Net.WebClient wc = new System.Net.WebClient();
wc.DownloadProgressChanged += wc_DownloadProgressChanged;
wc.DownloadStringCompleted += wc_DownloadStringComplete;
wc.AllowReadStreamBuffering = true;
wc.DownloadStringAsync(new Uri(baseURI));
(顺便说一句,这是在公共MainPage例程中,因此它在加载应用程序时运行)。
调用我的wc_DownloadProgressChanged
函数完全没有问题,并报告已收到153个字节。 (这是正确的,我已经检查了使用Wireshark到达的数据包,数据到达并且ACK按预期发送。)
然而wc_DownloadStringComplete
函数,就像这样开始:
void wc_DownloadStringComplete
(object sender,
System.Net.DownloadStringCompletedEventArgs e)
{
MessageBoxResult res;
try
{
if (e.Error == null && e.Result != null)
{
....
}
始终生成错误,执行会进入catch块。任何访问DownloadStringCompletedEventArgs
e
变量的尝试都会导致错误:Unhandled Error in Silverlight Application Object reference not set to an instance of an object at CircuitTheory.MainPage.wc_DownloadStringComplete(Object sender, DownloadStringCompletedEventArgs e).
我认为系统正在调用我的wc_DownloadStringComplete
函数而未设置DownloadStringCompletedEventArgs
参数e
。但这不可能,不是吗?
任何想法我可能正在做什么/理解错误?如果e
未设置为任何内容,如何获取收到的数据?