PDA

View Full Version : مشکل لود تصویر از اینترنت بر روی فرم با تاخیر زمانی زیاد



Iman7228
شنبه 25 آذر 1391, 16:36 عصر
با سلام مجدد.

دوستان من توی فرمم دارم از یک جعبه تصویر(Picturebox) استفاده می کنم که تصویر داخل این جعبه از اینترنت لود میشه.
نمیدونم چرا با تاخیر 5-10 ثانیه ای لود میشه. حجم عکس هم کمتر از 10کیلوبایته.
بنظرم غیرعادیه این تاخیر.

اینهم کدشه :



System.Net.WebClient Client = new System.Net.WebClient();
string url = @"http://barnamenevis.org/images/smilies/yahoo/123.gif";
byte[] img = Client.DownloadData(url);
MemoryStream ms = new MemoryStream(img);
pic_banner1.Image = Image.FromStream(ms);



بنظر شما راه دیگه ای داره که بشه سریعتر عکس رو لود کرد؟؟؟

ممنون پیشاپیش

Iman7228
یک شنبه 26 آذر 1391, 11:21 صبح
کسی نظری نداره؟؟؟

Mahmoud.Afrad
یک شنبه 26 آذر 1391, 15:05 عصر
مشکلی که نداره سرعتش هم احتمالا به خاطر خط اینترنت شماست. ولی با یک خط کد هم میتونید این کار رو انجام بدید:
pictureBox1.ImageLocation = @"http://barnamenevis.org/images/smilies/yahoo/123.gif";

tooraj_azizi_1035
یک شنبه 26 آذر 1391, 15:14 عصر
سرعت به اینترنت مربوطه اما میشه جلوی هنگ برنامه رو گرفت:

private void startButton_Click(object sender, EventArgs e)
{
// Ensure WaitOnLoad is false.
pictureBox1.WaitOnLoad = false;

// Load the image asynchronously.
pictureBox1.LoadAsync(@"http://localhost/print.gif");
}

Iman7228
یک شنبه 26 آذر 1391, 16:19 عصر
سرعت به اینترنت مربوطه اما میشه جلوی هنگ برنامه رو گرفت:

private void startButton_Click(object sender, EventArgs e)
{
// Ensure WaitOnLoad is false.
pictureBox1.WaitOnLoad = false;

// Load the image asynchronously.
pictureBox1.LoadAsync(@"http://localhost/print.gif");
}


ممنون از پاسختون..

1- حالا چطور میشه تعداد 5 یا 10 تصویر موجود در یک دایرکتوری(مثلاً : http://site.com/ (http://localhost/print.gif)) رو به صورت رندوم و با فاصله زمانی مشخص(مثلا هر 5ثانیه) بر روی پیکچرباکس نمایش داد؟؟؟

2- آیا میشه خاصیت WaitOnLoad رو برای متن هم درنظر داشت؟؟؟ من متنی رو میخوام از یک فایل تکست در اینترنت، در کمبوباکس نمایش بدم، ولی تا زمان لود شدن متن، با افت سرعت برنامه روبرو میشم و برنامه تو هنگ می مونه... نمونش در لینک زیر موجود هست :

نمایش فایل متنی در داخل combobox از اینترنت (http://barnamenevis.org/showthread.php?373867-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D9%81%D8%A7%DB%8C%D9%84-%D9%85%D8%AA%D9%86%DB%8C-%D8%AF%D8%B1-%D8%AF%D8%A7%D8%AE%D9%84-combobox-%D8%A7%D8%B2-%D8%A7%DB%8C%D9%86%D8%AA%D8%B1%D9%86%D8%AA)

tooraj_azizi_1035
دوشنبه 27 آذر 1391, 09:51 صبح
سوال 1: باید هر 5 تا رو دانلود کنید و بعد نمایش بدید این Performance بهتری رو در بر داره. با FTP برنامه باید تو مسیر برنامه کپی کنه تا هر بار مجبور به گرفتن از سرور نباشه.
سوال 2: باید با متد DownloadstringAsync شیء WebClient کار کنید.

هر متدی که آخر اسمش Async داره به این معنی هست که کدش روی ترد دیگه ای استارت میشه و بلافاصله (منتظر اتمام نمی ماند) بر می گرده به تردی که اون رو صدا زده.

Iman7228
چهارشنبه 29 آذر 1391, 20:11 عصر
سوال 1: باید هر 5 تا رو دانلود کنید و بعد نمایش بدید این Performance بهتری رو در بر داره. با FTP برنامه باید تو مسیر برنامه کپی کنه تا هر بار مجبور به گرفتن از سرور نباشه.
سوال 2: باید با متد DownloadstringAsync شیء WebClient کار کنید.

هر متدی که آخر اسمش Async داره به این معنی هست که کدش روی ترد دیگه ای استارت میشه و بلافاصله (منتظر اتمام نمی ماند) بر می گرده به تردی که اون رو صدا زده.

کسی می تونه این دو راه رو بیشتر توضیح بده؟؟؟