PDA

View Full Version : سوال: بالا بردن سرعت کد



remower
یک شنبه 10 شهریور 1392, 13: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, 16: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, 18: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 استفاده کنید.