سلام . من یک فایل دارم که توش 2 میلیون آیتم قرار داره . چگونه می توانم به لیست باکس منتقل کنم ؟ این حرکت 1 ساعت زمان می برد تا یک یک خط ها را بریزد توی لیست باکس . آیا راه دیگری دارد که سریع انجام شود ؟
سلام . من یک فایل دارم که توش 2 میلیون آیتم قرار داره . چگونه می توانم به لیست باکس منتقل کنم ؟ این حرکت 1 ساعت زمان می برد تا یک یک خط ها را بریزد توی لیست باکس . آیا راه دیگری دارد که سریع انجام شود ؟
چه نیازی هست که همه بیان توی یک کنترل؟
سلام منم چند ساعت پیش یه تاپیک زدم با همین موضوع بچه ها کمک های خوبی کردن... منم دقیقا مشکل شما رو دارم...
https://barnamenevis.org/showthread.p...DB%8C-combobox
آخرین ویرایش به وسیله Mahmoud.Afrad : یک شنبه 17 خرداد 1394 در 01:34 صبح
سلام. بقول دوستمون چه لزومی داره حتما بریزیش توی لیست باکس؟؟ بریزش تو یه ارایه بعد سرچتو انجام بده
چیزی که به ذهن من میرسه
شما دو راه کلی برای خوندن از فایل داری
1 استفاده از StreamReader
2 - استفاده از توابع اماده IO.File مثل ReadAllLines یا readAllText
بهترین راه برای فهمیدن سرعتشون اینه که تست کنین
خودتون یه تست بکنین ببینین کدوم سرعتش بهتره
یه فایل رو با هر دو روش باز کنین بخونین و بریزین تو لیست باکس
فقط برا ریختن تو لیست باکس یه
List<string lst = new List<string>();
درست کنین بعد همه خطهای فایل رو بریزین تو این لیست بعد با متد
lbx.Items.AddRange(lst);
بریزین تو لیست باکس تون
از ترد استفاده کنید.
ولی بازم فکر نمیکنم توی سرعت لود از فایل(نه از دیتابیس) تاثیر محسوسی داشته باشه.
به نظرم اگه بتونی این قسمت رو با C++ انجام بدی سرعتت بهتر بشه.
یه نمونه هم اتفاقا دیدم که هم برنامه C# بود و هم C++. از فایلی به حجم 4گیگ اطلاعات رو میخوندن. که سی پلاس پلاس مثل اب خوردن بازش میکرد. اتفاقا فایله هم txt بود!
(فایل کدملی مال انتخابات)
آخرین ویرایش به وسیله reza_ali202000 : چهارشنبه 20 خرداد 1394 در 14:57 عصر
این فایل شما چیه؟ فایل Textمعمولی هست؟
بعدش جستجو زدن که حتمن نیاز به دیدنشون توی لیست نیست شما میتونید از منبع درخواست و نمایش بدید نمایش یکباره 2 ملیون رکورد توی لیست به نظرم کمی غیر حرفه ای هست معمولا از Paging استفاده میشه تا بصورت دسته ای رکورد نمایش داده بشه
تصویر زیر را ببینید ، وقتی کلمه لاهیجام را نوشتم ، از بین لیست اول سمت چپ سرچ کرد و هر آیتمی که توش لاهیجان بود رو آورد لیست سمت راست .
sssaaa.PNG
منبع اطلاعاتی رو مشخص نکردید و اینکه از چه روشی استفاده میکنید Ado.net و غیره
به نظر من اگر میخواین 2 میلون رکورد در لیست سمت چپ نشون بدید از Backgroundworker ویا از async بهره ببرید و از صفحه بندی استفاده کنید تا در پس زمینه عملیات لود انجام بشه
بعد جستجو زدن سمت راست هم باز از منبع باشه
ببخشید اگه اطلاعات محرمانه نیس برنامتون رو بزارید تا ببینیم با الگوریتم های دیگه میشه پیاده سازیش کرد و بهینه بشه.