View Full Version : سوال: بالا بردن سرعت کد
remower
یک شنبه 10 شهریور 1392, 14:18 عصر
با سلام
به لیست باکس یه فایل با فرمت تکست میدم ولی حجم این فایل 58 مگابایت است ، موقع انجام این دستور برنامه قفل میکنه2 ساعت صبر کردم
کد دستور رو اجرا نکرد
آیا راهی هست که این دستور با سرعت انجام بشه و سریعا دستور رو انجام بده؟
var
source = listBox1.Items.Cast<object>(); listBox2.DataSource = source.Where(i => source.Count(x => x.ToString() == i.ToString()) > 1).Distinct().ToList();
mthreat.info
یک شنبه 10 شهریور 1392, 17:05 عصر
با Thread میشه این کار رو کرد نمونه کد :
اول اینو Using کن
using System.Threading;
بعد CheckForIllegalCrossThreadCalls رو مساوی با False قرار بده
public Form1()
{
CheckForIllegalCrossThreadCalls = false;
InitializeComponent();
}
بعد یک نخ تعریف کن و اونو فراخونی کن
Thread DW;
private void button1_Click(object sender, EventArgs e)
{
DW = new Thread(new ThreadStart(writeBigText));
DW.Start();
}
private void writeBigText()
{
for (int i = 0; i < 99999999; i++)
{
listBox1.Items.Add(i);
textBox1.Text += i.ToString();
}
}
مهرداد صفا
یک شنبه 10 شهریور 1392, 19:50 عصر
با سلام
به لیست باکس یه فایل با فرمت تکست میدم ولی حجم این فایل 58 مگابایت است ، موقع انجام این دستور برنامه قفل میکنه2 ساعت صبر کردم
کد دستور رو اجرا نکرد
آیا راهی هست که این دستور با سرعت انجام بشه و سریعا دستور رو انجام بده؟
var
source = listBox1.Items.Cast<object>(); listBox2.DataSource = source.Where(i => source.Count(x => x.ToString() == i.ToString()) > 1).Distinct().ToList();
با سلام.
معمولا Listbox با تعداد آیتم بیشتر از 10-20 هزار عدد (هنگام نمایش فرم و در نتیجه کنترل) کم و بیش مشکلات کندی و افت سرعت را به وجود می آورد، ولی اگر شما فقط در همین خط مشکل دارید از حلقه ها به جای linq استفاده کنید.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.