View Full Version : سوال: Sleep ترد با دکمه
aapalireza
یک شنبه 30 آبان 1389, 17:05 عصر
سلام!
چه گونه میتوانم در یک پروژهی multithread, در رویداد کلیک یک button خوابیدن و غیر فعال شدن یکی از threadها و در رویداد buton دیگر فعال شدن ترد را بنویسم؟
mahdi87_gh
یک شنبه 30 آبان 1389, 19:15 عصر
به صورت زیر thread رو یه متغیر گلوبال تعریف کنید
Thread th1;
با کد زیر ترد رو مقدار دهی کنید. تابع thread1 تابع شروع این ترد معرفی شده است
th1 = new Thread(new ThreadStart(thread1));
با کد های زیر با ترد کار کنید.هملکرد هر کدام از نام تابع آن مشخص است
th1.Start();
th1.Abort();
th1.Suspend();
th1.Resume();موفق باشید
aapalireza
یک شنبه 30 آبان 1389, 19:25 عصر
به صورت زیر thread رو یه متغیر گلوبال تعریف کنید
Thread th1;با کد زیر ترد رو مقدار دهی کنید. تابع thread1 تابع شروع این ترد معرفی شده است
th1 = new Thread(new ThreadStart(thread1));
با کد های زیر با ترد کار کنید.هملکرد هر کدام از نام تابع آن مشخص است
th1.Start();
th1.Abort();
th1.Suspend();
th1.Resume();موفق باشید
ممنون
من در رویداد کلیک button نوشتم: th1.Resume
حلقهی من که در ترد است متوقف میشود اما خطا میدهد و مینویسد:
Thread is not user-suspended; it cannot be resumed.
چه کنم؟
در ضمن با Resume کردن آن را نگه میدارم,
چگونه آن را ادامه دهم؟
یعنی از ادامهی عملیات قبلی شروع کند...
mahdi87_gh
یک شنبه 30 آبان 1389, 19:40 عصر
لطفا به لینک زیر با دقت نگاه کنید.
http://msdn.microsoft.com/en-us/library/tttdef8x%28VS.80%29.aspx
اگه مشکلتون رو خودتون حل نکردین، لصفا کدتون رو بزارین تا ببینیم مشکل از چیه؟
موفق باشید
aapalireza
یک شنبه 30 آبان 1389, 23:41 عصر
لطفا به لینک زیر با دقت نگاه کنید.
http://msdn.microsoft.com/en-us/library/tttdef8x%28VS.80%29.aspx
اگه مشکلتون رو خودتون حل نکردین، لصفا کدتون رو بزارین تا ببینیم مشکل از چیه؟
موفق باشید
using System.Threading;
namespace stop
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Thread t;
delegate void myDelegate();
private void button1_Click(object sender, EventArgs e)
{
t = new Thread(new ThreadStart(this.Count));
t.Start();
}
void Count()
{
for (int i = 0; i <= 1000; i++)
{
if (textBox1.InvokeRequired)
{
myDelegate d = new myDelegate(this.Count);
Invoke(d);
}
else
{
textBox1.Text = i.ToString();
Application.DoEvents();
Thread.Sleep(10);
}
}
t.Abort();
}
private void btnStop_Click(object sender, EventArgs e)
{
t.Resume();
}
}
}
این کد با فرض این است که یک تکست باکس, و دو bytton بر روی صفحه وجود دارد...
اگر با تکمیل کد من یک نمونه کد بدهید که با کلیک بر رویstart شروع شود, با کلیک بر روی stop حلقه متوقف شود و با Play حلقه ادامه دهد...(از اول شروع نکند! ادامه دهد!)
خیلی متشکر میشوم, فکر میکنم تمام حالت های مورد نیاز را پوشش بدهد!
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.