В моем мобильном приложении я хочу загрузить все изображения из архаиста ссылок. Для каждой ссылки я создаю поток и делаю httpwebrequest. Проблема в том, что мое приложение работает негладко. Кажется, что вы получаете задержку каждый раз, когда я создаю новый поток, и когда поток выполняется (когда выполняется поток, я нарисую img на фон). Вот мой код:C# compact framework: многопоточная причина задержки?
for (int i = 0; i < NumbersOfImg; i++)
{
if (i < ImgObjArr.Count)
{
ThreadStart myThread = new ThreadStart(getUrlImg);
Thread t = new Thread(myThread);
t.Start();
}
}
private void getUrlImg()
{
MyImage mycurrentImg = (MyImage)ImgObjArr[currentMyImg];
if (currentMyImg < ImgObjArr.Count - 1)
currentMyImg++;
myRequest = (HttpWebRequest)WebRequest.Create(mycurrentImg.ImageLink);
myResponse = (HttpWebResponse)myRequest.GetResponse();
Stream ImgStream = myResponse.GetResponseStream();
mycurrentImg.FullImg = new Bitmap(ImgStream);
this.BeginInvoke(new EventHandler(ImageUpdate));
}
и метод ImageUpdate() нарисует изображение. И когда приложение перейдет к следующей строке, я создам количество потоков, чтобы продолжить создание webrequest. И задержка происходит, когда старый поток не завершен, но я создаю новые потоки. Итак, какое-нибудь предложение, почему мое приложение задерживается? Заранее спасибо.
Во-первых, большое спасибо за ваш ответ. Итак, как вы полагаете, я должен ограничивать потоки, доступные за один раз. Но как насчет того, если один веб-запрос http встретил исключение тайм-аута запроса. По умолчанию мое приложение сначала имеет 9 изображений (и 9 потоков). Затем каждую навигацию загружают более 3 потоков (по 3 img каждой строки). Есть ли совет для меня? Thanks – Thyphuong
Несколько мыслей; если группы изображений всегда загружаются вместе - например, 9, 3 или всего 36 - может быть более эффективным загрузить большое изображение, содержащее изображения, которые вам нужны в качестве плиток. Это уменьшит количество запросов/ответов. Что касается тайм-аутов, пул из 4 потоков должен иметь возможность обрабатывать случайные запросы без значительного влияния на пользователя.Если служба отключена или связь потеряна, любое количество потоков будет просто висеть там. –
Это не группа. Изображения представляют собой отдельные изображения из разных ссылок. – Thyphuong