您的位置:首页 > 其它

wp8通过WebClient从服务器下载文件

2015-01-07 20:31 363 查看
通过WebClient从Web服务器下载文件,并保存到wp8手机应用程序的独立存储。

我们可以通过利用webClient_DownloadStringCompleted来获得下载完成所需要的时间,用Stopwatch得到下载的总时间。
通常我们都将上传、下载作为异步事件来处理,以便不阻止主线程。


String url = "http://172.18.144.248:8080/upload/" + filename;
WebClient client = new WebClient();
client.Encoding = System.Text.Encoding.UTF8;
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(this.webClient_DownloadStringCompleted);
Stopwatch sw;
sw = Stopwatch.StartNew();//用来记录总的下载时间

public static Task<string> DownloadStringTask(this WebClient webClient, Uri uri)
{
var tcs = new TaskCompletionSource<string>();
webClient.DownloadStringCompleted += (s, e) =>
{
if (e.Error != null)
{
tcs.SetException(e.Error);
}
else
{
tcs.SetResult(e.Result);
}
};
webClient.DownloadStringAsync(uri);
return tcs.Task;
}

public void webClient_DownloadStringCompleted(object s, DownloadStringCompletedEventArgs e)
{
sw.Stop();
long totaltime = sw.ElapsedMilliseconds;
MessageBox.Show(totaltime+"ms,download succeed!");
}
webClient.DownloadStringAsync(uri)得到的是字符串,我们将其保存到独立存储中,通过 await IsolatedStorageHelper.writeFileAsync(filename,cont)异步执行,通过writeFileAsync函数写入独立存储。

public async static Task writeFileAsync(String fileName, String text)
{
using (IsolatedStorageFile isolatedStorageFile = IsolatedStorageFile.GetUserStoreForApplication())
{
if (isolatedStorageFile.FileExists(fileName))
{
isolatedStorageFile.DeleteFile(fileName);
}
using (IsolatedStorageFileStream isolatedStorageFileStream = isolatedStorageFile.CreateFile(fileName))
{
using (StreamWriter streamWriter = new StreamWriter(isolatedStorageFileStream,System.Text.Encoding.UTF8))
{
streamWriter.Write(text);
streamWriter.Close();
}
isolatedStorageFileStream.Close();
isolatedStorageFileStream.Dispose();

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: