نقل قول: اجرای دو دستور با هم
باید از تردها استفاده کنید که طریقه ی استفاده از تردها هم خیلی سادس و میتونید با یه جستجو به نتیجه برسین.
نقل قول: اجرای دو دستور با هم
در vb این طوری این مشکل حل میشه
Application.DoEvents()
در داخل حلقه کد بالا رو بنویس حل میشه ولی از Sleep که استفاده کنی چاره ای نداره جز اینکه یه Sleep خودت بسازی به این صورت که
من کد VB می نویسم خودتون تبدیل کنید
Private Sub NewSleep(ByVal D As Integer)
Dim L As Long = Now.Ticks
Do
Application.DoEvents()
If (Now.Ticks - L > D) Then Exit Do
Loop
End Sub
نقل قول: اجرای دو دستور با هم
استفاده از Threading راه اول شماست .
راه دیگه استفاده از BackgroundWorker است.
راه سوم هم استفاده از Timer و قرار دادن کد درون رویداد Tick
نقل قول: اجرای دو دستور با هم
مشکل با لطف شما حل شد حالا کد ردیف 8 ارور می ده
Thread th1 = new Thread(
delegate()
{
for (int i = 0; i <= 100; i++)
{
Thread.Sleep(1000);
y += 10;
label1.Location = new System.Drawing.Point(y, x);
}
}
);
th1.Start();
این ارور را می دهد
http://grphics.tk/img/8e918489f1e0.jpg
مشکل از کجا است
نقل قول: اجرای دو دستور با هم
کدتون رو به صورت زیر تغییر بدین درست میشه:
private void button1_Click(object sender, EventArgs e)
{
Thread th1 = new Thread(new ThreadStart(Func));
th1.Start();
}
private void Func()
{
this.Invoke(new Action(delegate()
{
{
int x = label1.Location.X;
int y = label1.Location.Y;
for (int i = 0; i <= 100; i++)
{
Thread.Sleep(1000);
y += 10;
label1.Location = new System.Drawing.Point(y, x);
}
}
}));
}