PDA

View Full Version : مبتدی: یه مشکل با فرم



alimooghashang
یک شنبه 25 بهمن 1388, 11:22 صبح
با سلام
این کد رو که می نویسم
فرم هنگ میکنه؟ راهی هست که هنگ نکنه و اطلاعات به درستی نمایش داده بشه؟




int i=0;
while (true)
{
i++;
textBox1.Text += i.ToString() + Environment.NewLine;
}
با تشکر

ASKaffash
یک شنبه 25 بهمن 1388, 11:41 صبح
سلام
باید از Thread استفاده کنید تا فرم شما هنگ نکند

SMRAH1
یک شنبه 25 بهمن 1388, 11:45 صبح
سلام
شرط while تا آخر دنیا ادامه پیدا می کنه!باید شرطش رو طوری تغییر بدی که یک جایی تموم بشه!
موفق باشی

alimooghashang
یک شنبه 25 بهمن 1388, 15:31 عصر
سلام
باید از Thread استفاده کنید تا فرم شما هنگ نکند

عین همین کد را با thread برام بفرستید
من نتونستم پیاده سازی کنم
با تشکر


سلام
شرط while تا آخر دنیا ادامه پیدا می کنه!باید شرطش رو طوری تغییر بدی که یک جایی تموم بشه!
موفق باشی


زحمت کشیدین
خوب اینو خودم میدونم که تا آخر ادامه پیدا میکنه
من میخوام همینکار رو انجام بده دیگه یعنی همیشه کار کنه و اطلاعات رو روی فرم نمایش بده

gwbasic
یک شنبه 25 بهمن 1388, 18:11 عصر
منظور از کدی که نوشتی رو بیشتر توضیح بده چون یه همچین کاری بی دلیل به نظر می رسه
اما اگر برای خودت توجیه پذیره برای حل این مشکل می تونی کد زیر رو داخل حلقه ات بندازی فرم دیگه هنگ نمی کنه


Application.DoEvent();

ASKaffash
سه شنبه 27 بهمن 1388, 10:11 صبح
سلام
اینهم کدی که خواسته بودید :


public partial class Form1 : Form
{
//----------------------
private Thread T;
public Form1()
{
InitializeComponent();
}
public void DF(string S)
{
this.textBox1.Text += S;
}
private void button1_Click(object sender, EventArgs e)
{
T = new Thread(MyThread);
T.Start();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
T.Abort();
}
//----------------------
private delegate void MySetText(string S);
public void MyThread()
{
MySetText MST = new MySetText(DF);
int i = 0;
while (true)
{
i++;
Invoke(MST, i.ToString() + Environment.NewLine);
Thread.Sleep(100);
}
}
//----------------------
}

Xcalivorse
سه شنبه 27 بهمن 1388, 11:48 صبح
دوست من از اين كد استفاده كن



int i = 0;
while (true)
{
i++;
textBox1.Text += i.ToString() + Environment.NewLine;
Application.DoEvents();
}

ASKaffash
سه شنبه 27 بهمن 1388, 12:06 عصر
سلام
استفاده از Application.DoEvents(); باعث می شود CPU خیلی در گیر شود

alimooghashang
سه شنبه 27 بهمن 1388, 13:26 عصر
سلام
استفاده از Application.DoEvents(); باعث می شود CPU خیلی در گیر شود
بله اینطوری خیلی درگیر میشه!!!
thread خیلی بهتره ولی تو زمانبندی ترد مشکل دارم
خیلی سخت شده
چون این یک نمونه بود، ولی من میخوام چند تا ترد همزمان کار کنند