我正在开发一个wp7应用程序。我需要从服务器下载一些文件到我的手机。这些文件是从列表框中选择的。当试图下载单个项目时,下载完美。但是,当我尝试同时下载多个项目时,会发生错误。我怎样才能同时下载多个项目?如何在wp7中使用多线程?
这里是我的代码下载文件。
IList<Item> selectedItems = documents.Where(p => p.IsChecked == true).ToList();
foreach (var item in selectedItems)
{
FileDownload objDownload = new FileDownload();
objDownload.FileName = item.Title;
objDownload.Url = item.Link;
objDownload.DocId = item.DocId;
ThreadPool.QueueUserWorkItem(t =>
{
Dispatcher.BeginInvoke(() =>
{
objDownload.DownloadFile();
});
Thread.Sleep(0);
});
}
,这里是在FileDownload类中的DownloadFile()方法
public void DownloadFile()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.AllowReadStreamBuffering = false;
request.BeginGetResponse(new AsyncCallback(DownloadFileData), request);
}
private void DownloadFileData(IAsyncResult result)
{
try
{
AddToDownloadList();
IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication();
string fileName = "DownloadedFiles\\" + FileName;
if (!isf.DirectoryExists("DownloadedFiles"))
isf.CreateDirectory("DownloadedFiles");
if (!isf.FileExists(fileName))
{
IsolatedStorageFileStream streamToWriteTo = new IsolatedStorageFileStream(fileName, FileMode.Create, isf);
HttpWebRequest request = (HttpWebRequest)result.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result);
Stream str = response.GetResponseStream();
byte [ ] data = new byte [ 16 * 1024 ];
int read;
long totalValue = response.ContentLength;
while ((read = str.Read(data, 0, data.Length)) > 0)
{
streamToWriteTo.Write(data, 0, read);
}
string file = streamToWriteTo.ToString();
streamToWriteTo.Close();
}
OfflineStatus = true;
}
catch (Exception ex)
{
OfflineStatus = false;
}
}
如何使用多线程下载的文件。
什么是错误? – 2012-02-02 09:42:16
错误消息是:“IsolatedStorageFileStream不允许操作”。 – 2012-02-02 10:26:35