У меня есть простое многофайловое приложение для загрузки Silverlight, и я хочу предоставить пользователю некоторую обратную связь, сейчас это только на стадии тестирования, и у меня нет веб-службы. Каким-то образом я не могу получить интерфейс для обновления:
private void DoUpload()
{
foreach (UploadFile file in fileInfos)
{
int BUFFERSIZE = 1024;
int offset = 0; //get from webservice, when partial file
FileStream s = file.FileInfo.OpenRead();
byte[] buffer = null;
long remainingBytes = s.Length - offset;
while (remainingBytes > 0)
{
if (remainingBytes < BUFFERSIZE)
{
buffer = new byte[remainingBytes];
BUFFERSIZE = (int)remainingBytes;
}
else if (remainingBytes > BUFFERSIZE)
{
buffer = new byte[BUFFERSIZE];
}
s.Read(buffer, 0, BUFFERSIZE);
//push to webservice
offset += BUFFERSIZE;
int newPercentage = offset / (int)file.FileInfo.Length * 100;
file.Percentage = newPercentage;
remainingBytes = s.Length - offset;
System.Threading.Thread.Sleep(10);
}
file.Percentage = 100;
file.ImageSource = "accept.png";
}
}
UploadFile привязан к пользовательскому интерфейсу, поэтому изменения в этом файле будут отражены в пользовательском интерфейсе. Проблема заключается в том, что вся эта загрузка занимает слишком много времени (имитируется это во сне), и во время этого пользовательского интерфейса связи не обновляется, любая идея о том, как это сделать?