PDA

View Full Version : چگونه لودینگ واقعی بسازیم



mrcoder01
یک شنبه 14 تیر 1394, 22:41 عصر
چگونه یک لودینگ واقعی بسازیم که الکی نباشه
و به اون تایمر نداده باشیم
بلکه محتوایات صفحات رو لود کنه
c#

ghasem110deh
یک شنبه 14 تیر 1394, 23:39 عصر
سلام
------
منظورتون اسپلش اسکرین موقه باز شدن برنامه هست ؟
اگه اینه ، میشه با ترد این کار رو کرد ، ولی برنامه های معمولی بعید میدونم اینقدر سنگین باشن که نیاز به چنین چیزی داشته باشن !

و اگه بخوایم چند ثانیه نمایش داده بشه مجبوریم از تایمر استفاده کنیم !؟ (تا جایی که میدونم)

TeacherMath
یک شنبه 14 تیر 1394, 23:44 عصر
من از یه روشی استفاده کرد نمی دونم درسته یا نه ولی فعلا ارور نداشته.
اومدیم یه کلاس از کلاس فرم مشتق کردم بعد یک فرم که روش نوشتم لطفا صبر کنید ایجاد کردم بعد فرم هایی که ساختم از این کلاس مشتق کردم موقع نمایش فرم این پیغام نمایش داده میشه.
public class MyTabPageForm : Form {
private static Form Loadding=new Loading();


public MyTabPageForm()
{
Loadding.TopMost = true;
this.Load += MyTabPageForm_Load;
this.Shown += MyTabPageForm_Shown;
}


void MyTabPageForm_Shown(object sender, EventArgs e)
{
Loadding.Hide();
}


void MyTabPageForm_Load(object sender, EventArgs e)
{
Loadding.Show();
Application.DoEvents();
}
public virtual void RefreshData(){}



}

ghossein
دوشنبه 15 تیر 1394, 03:19 صبح
سلام
خسته نباشید

شما می تونید از backgroundworker استفاده کنید ، اما یه dll هست (waitwindow) که می تونه شما رو در این زمینه کمک کنه ، که در اصل همین dll اومده از همین کلاس استفاده کرده و من هم از این dll در پروژه زیر ازش استفاده کردم ، مثلاً لود داده ها از فایل xml به دیتاتیبل . (زمان لودینگش واقعی هست .)


http://barnamenevis.org/showthread.php?471391-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%DA%A9%D9%86%DB%8C%D8%AF-%D8%B3%D9%88%D8%B1%D8%B3-%D9%81%D8%B1%D9%88%D8%B4%DA%AF%D8%A7%D9%87-%D8%B3%D9%86%DA%AF

golbafan
دوشنبه 15 تیر 1394, 20:32 عصر
سلام
اسپلش اسکرین ها معمولا با ایجاد اولین فرم تولید شده و نمایش داده میشن و در نهایت بعد از باز شدن برنامه و انجام توابع اولبه باید نابود بشن
بنابر این نیازی به تایمر نیست

برای جالب تر شدنش میتونید با ایجاد هر فرم و یا بخشهای برنامه ، یک متن خاص رو در اسپلشتون نشون بدین

golbafan
دوشنبه 15 تیر 1394, 20:39 عصر
یک مثال خوب در c#:

http://www.codeproject.com/Articles/5454/A-Pretty-Good-Splash-Screen-in-C

mohsen.a.s.95
سه شنبه 16 تیر 1394, 15:19 عصر
به نظر من اگه برنامه تون یه برنامه ی سادس که صرفا محتویات فرم و کد ها رو لود می کنه که اصلا نیازی به صفحه لودینگ نیست ، چون حتی اگه این صفحه رو بسازید که یک لودینگ واقعی داشته باشه صفحه خیلی زود لود میشه و اصلا دیده نمیشه
اما اگه برنامتون یک سری دیتا لود میکنه مثلا یک سری فایل از اینترنت یا هارد دیسک میخونه که حجمش بالاس و باید منتظر بمونید که اونها خونده شن اولین مفهومی که به ذهنم میرسه جدای از اینکه اصلا زبان برنامه نویسی چی باشه اینه که شما باید حجم دیتا رو بدونید ، حالا نه حتما به مگا بایت این ها ، منظورم خود کمیت مثلا شما قراره 150 فایل لود کنید ، بنابر این یک متغیر به اسم percent در نظر بیگیرد و محتوای این متغیر باید تعداد فایل های لود شده تقسیم بر تعداد کل فایل ها یعنی 150 بشه و در نهایت ضرب در 100 بشه این درصد پیشرفت رو نشون میده و شما میتونید با ست کردنش رو پروگرس بار یک لودینگ واقعی داشته باشید و در نهایت وقتی همه ی 150 تا فایل لود شدن از فرم خارج شین و به یه فرم دیگه برین
حالا شما می تونید به جای تعداد فایل حجم فایل رو هم در نظر بیگیرد یا هر تقسیم بندی دیگه ای که خودتون دوست دارید
ولی اصل کار اینه که برای بدست اوردن پیشرفت کار تعداد قسمت کار های انجام شده رو تقسیم بر تعداد کل کارها بکنید و بعدش اون رو ضرب در 100 کنید ، این فرمول پیشرفت کار رو بهتون نشون میده