我正在使用以下代码并且效果很好
private void somethingButton_Click(object sender, System.Windows.RoutedEventArgs e)
{
WebClient webClient = new WebClient();
webClient.OpenReadCompleted += webClient_OpenReadCompleted;
webClient.OpenReadAsync(new Uri(myUri));
}
void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
if(e.Error != null)
{
messageTextBlock.Text = e.Error.Message;
return;
}
using (Stream s=e.Result)
{
XDocument document = XDocument.Load(s);
var q1 = from c in document.Descendants("result")
select new IndeedResult
{
Title =((string)c.Element("title")).Trim(),
ResultUri = ((string)c.Element("url")).Trim(),
Date = ((string)c.Element("date")).Trim(),
};
myDataGrid.ItemsSource = q1;
}
但是我想添加另一个WebClient
,webClient2
,它们将完全相同,但具有不同的uri和不同的结构,所以我将webClient2_OpenReadCompleted
...
问题是我最终需要合并(或合并之前做一些逻辑)来自var q1
的{{1}}和来自webClient_OpenReadCompleted
的{{1}}然后
var q2
有一种简单的方法可以做到吗?我不知道如何使用这些事件处理程序。
答案 0 :(得分:1)
好问题!它喜欢这个
void webClient_OpenReadCompleted( object sender, OpenReadCompletedEventArgs e )
{
Stream stream = (Stream)e.Result;
BinaryReader reader = new BinaryReader( stream );
byte[] buffer = reader.ReadBytes( (int)stream.Length );
Uri uri = (Uri)e.UserState;
streams.Add( uri.AbsoluteUri, new MemoryStream( buffer ) );
}
注意UserState的用法,以便在我的流词典中提供unqiue键。完美的工作:-)这样你就可以使用任意数量的文件/图像/二进制数据!
看到这个,看看它有多强大...... .... http://www.alansimes.com/warp3dsilverlighttestpage.html